// This file is generated automatically
using System;
using System.Collections.Generic;
using System.Threading.Tasks;
namespace TL
{
using TL.Methods;
using Client = WTelegram.Client;
/// Boolean type. See
public enum Bool : uint
{
///Constructor may be interpreted as a booleanfalse value.
False = 0xBC799737,
///The constructor can be interpreted as a booleantrue value.
True = 0x997275B5,
}
/// See predefined identifiers. See
[TLDef(0x3FEDD339)]
public class True : IObject { }
/// Error. See
[TLDef(0xC4B9F9BB)]
public class Error : IObject
{
/// Error code
public int code;
/// Message
public string text;
}
/// Corresponds to an arbitrary empty object. See
/// a null value means null
[TLDef(0x56730BCC)]
public class Null : IObject { }
/// Peer Derived classes: , , , , , See
/// a null value means inputPeerEmpty
public abstract partial class InputPeer : IObject { }
/// Defines the current user. See
[TLDef(0x7DA07EC9)]
public class InputPeerSelf : InputPeer { }
/// Defines a chat for further interaction. See
[TLDef(0x35A95CB9)]
public class InputPeerChat : InputPeer
{
/// Chat idientifier
public long chat_id;
}
/// Defines a user for further interaction. See
[TLDef(0xDDE8A54C)]
public partial class InputPeerUser : InputPeer
{
/// User identifier
public long user_id;
/// ⚠ REQUIRED FIELD. See how to obtain it
access_hash value from the constructor
public long access_hash;
}
/// Defines a channel for further interaction. See
[TLDef(0x27BCBBFC)]
public partial class InputPeerChannel : InputPeer
{
/// Channel identifier
public long channel_id;
/// ⚠ REQUIRED FIELD. See how to obtain it
access_hash value from the constructor
public long access_hash;
}
/// Defines a min user that was seen in a certain message of a certain chat. See
[TLDef(0xA87B0A1C)]
public class InputPeerUserFromMessage : InputPeer
{
/// The chat where the user was seen
public InputPeer peer;
/// The message ID
public int msg_id;
/// The identifier of the user that was seen
public long user_id;
}
/// Defines a min channel that was seen in a certain message of a certain chat. See
[TLDef(0xBD2A0840)]
public class InputPeerChannelFromMessage : InputPeer
{
/// The chat where the channel's message was seen
public InputPeer peer;
/// The message ID
public int msg_id;
/// The identifier of the channel that was seen
public long channel_id;
}
/// Defines a user for subsequent interaction. Derived classes: , , See
/// a null value means inputUserEmpty
public abstract class InputUserBase : IObject { }
/// Defines the current user. See
[TLDef(0xF7C1B13F)]
public class InputUserSelf : InputUserBase { }
/// Defines a user for further interaction. See
[TLDef(0xF21158C6)]
public partial class InputUser : InputUserBase
{
/// User identifier
public long user_id;
/// ⚠ REQUIRED FIELD. See how to obtain it
access_hash value from the constructor
public long access_hash;
}
/// Defines a min user that was seen in a certain message of a certain chat. See
[TLDef(0x1DA448E2)]
public class InputUserFromMessage : InputUserBase
{
/// The chat where the user was seen
public InputPeer peer;
/// The message ID
public int msg_id;
/// The identifier of the user that was seen
public long user_id;
}
/// Object defines a contact from the user's phonebook. Derived classes: See
public abstract class InputContact : IObject { }
/// Phone contact. The client_id is just an arbitrary contact ID: it should be set, for example, to an incremental number when using contacts.importContacts, in order to retry importing only the contacts that weren't imported successfully. See
[TLDef(0xF392B7F4)]
public class InputPhoneContact : InputContact
{
/// User identifier on the client
public long client_id;
/// Phone number
public string phone;
/// Contact's first name
public string first_name;
/// Contact's last name
public string last_name;
}
/// Defines a file uploaded by the client. Derived classes: , See
public abstract partial class InputFileBase : IObject
{
/// Random file identifier created by the client
public abstract long ID { get; }
/// Number of parts saved
public abstract int Parts { get; }
/// Full name of the file
public abstract string Name { get; }
}
/// Defines a file saved in parts using the method upload.saveFilePart. See
[TLDef(0xF52FF27F)]
public partial class InputFile : InputFileBase
{
/// Random file identifier created by the client
public long id;
/// Number of parts saved
public int parts;
/// Full name of the file
public string name;
/// In case the file's md5-hash was passed, contents of the file will be checked prior to use
public byte[] md5_checksum;
/// Random file identifier created by the client
public override long ID => id;
/// Number of parts saved
public override int Parts => parts;
/// Full name of the file
public override string Name => name;
}
/// Assigns a big file (over 10Mb in size), saved in part using the method upload.saveBigFilePart. See
[TLDef(0xFA4F0BB5)]
public partial class InputFileBig : InputFileBase
{
/// Random file id, created by the client
public long id;
/// Number of parts saved
public int parts;
/// Full file name
public string name;
/// Random file id, created by the client
public override long ID => id;
/// Number of parts saved
public override int Parts => parts;
/// Full file name
public override string Name => name;
}
/// Defines media content of a message. Derived classes: , , , , , , , , , , , , , See
/// a null value means inputMediaEmpty
public abstract class InputMedia : IObject { }
/// Photo See
[TLDef(0x1E287D04)]
public class InputMediaUploadedPhoto : InputMedia
{
/// Flags, see TL conditional fields
public Flags flags;
/// The uploaded file
public InputFileBase file;
/// Attached mask stickers
[IfFlag(0)] public InputDocument[] stickers;
/// Time to live in seconds of self-destructing photo
[IfFlag(1)] public int ttl_seconds;
[Flags] public enum Flags
{
/// Field has a value
has_stickers = 0x1,
/// Field has a value
has_ttl_seconds = 0x2,
}
}
/// Forwarded photo See
[TLDef(0xB3BA0635)]
public class InputMediaPhoto : InputMedia
{
/// Flags, see TL conditional fields
public Flags flags;
/// Photo to be forwarded
public InputPhoto id;
/// Time to live in seconds of self-destructing photo
[IfFlag(0)] public int ttl_seconds;
[Flags] public enum Flags
{
/// Field has a value
has_ttl_seconds = 0x1,
}
}
/// Map. See
[TLDef(0xF9C44144)]
public class InputMediaGeoPoint : InputMedia
{
/// GeoPoint
public InputGeoPoint geo_point;
}
/// Phonebook contact See
[TLDef(0xF8AB7DFB)]
public class InputMediaContact : InputMedia
{
/// Phone number
public string phone_number;
/// Contact's first name
public string first_name;
/// Contact's last name
public string last_name;
/// Contact vcard
public string vcard;
}
/// New document See
[TLDef(0x5B38C6C1)]
public class InputMediaUploadedDocument : InputMedia
{
/// Flags, see TL conditional fields
public Flags flags;
/// The uploaded file
public InputFileBase file;
/// Thumbnail of the document, uploaded as for the file
[IfFlag(2)] public InputFileBase thumb;
/// MIME type of document
public string mime_type;
/// Attributes that specify the type of the document (video, audio, voice, sticker, etc.)
public DocumentAttribute[] attributes;
/// Attached stickers
[IfFlag(0)] public InputDocument[] stickers;
/// Time to live in seconds of self-destructing document
[IfFlag(1)] public int ttl_seconds;
[Flags] public enum Flags
{
/// Field has a value
has_stickers = 0x1,
/// Field has a value
has_ttl_seconds = 0x2,
/// Field has a value
has_thumb = 0x4,
/// Whether the specified document is a video file with no audio tracks (a GIF animation (even as MPEG4), for example)
nosound_video = 0x8,
/// Force the media file to be uploaded as document
force_file = 0x10,
}
}
/// Forwarded document See
[TLDef(0x33473058)]
public class InputMediaDocument : InputMedia
{
/// Flags, see TL conditional fields
public Flags flags;
/// The document to be forwarded.
public InputDocument id;
/// Time to live of self-destructing document
[IfFlag(0)] public int ttl_seconds;
/// Text query or emoji that was used by the user to find this sticker or GIF: used to improve search result relevance.
[IfFlag(1)] public string query;
[Flags] public enum Flags
{
/// Field has a value
has_ttl_seconds = 0x1,
/// Field has a value
has_query = 0x2,
}
}
/// Can be used to send a venue geolocation. See
[TLDef(0xC13D1C11)]
public class InputMediaVenue : InputMedia
{
/// Geolocation
public InputGeoPoint geo_point;
/// Venue name
public string title;
/// Physical address of the venue
public string address;
/// Venue provider: currently only "foursquare" needs to be supported
public string provider;
/// Venue ID in the provider's database
public string venue_id;
/// Venue type in the provider's database
public string venue_type;
}
/// New photo that will be uploaded by the server using the specified URL See
[TLDef(0xE5BBFE1A)]
public class InputMediaPhotoExternal : InputMedia
{
/// Flags, see TL conditional fields
public Flags flags;
/// URL of the photo
public string url;
/// Self-destruct time to live of photo
[IfFlag(0)] public int ttl_seconds;
[Flags] public enum Flags
{
/// Field has a value
has_ttl_seconds = 0x1,
}
}
/// Document that will be downloaded by the telegram servers See
[TLDef(0xFB52DC99)]
public class InputMediaDocumentExternal : InputMedia
{
/// Flags, see TL conditional fields
public Flags flags;
/// URL of the document
public string url;
/// Self-destruct time to live of document
[IfFlag(0)] public int ttl_seconds;
[Flags] public enum Flags
{
/// Field has a value
has_ttl_seconds = 0x1,
}
}
/// A game See
[TLDef(0xD33F43F3)]
public class InputMediaGame : InputMedia
{
/// The game to forward
public InputGame id;
}
/// Generated invoice of a bot payment See
[TLDef(0xD9799874)]
public class InputMediaInvoice : InputMedia
{
/// Flags, see TL conditional fields
public Flags flags;
/// Product name, 1-32 characters
public string title;
/// Product description, 1-255 characters
public string description;
/// URL of the product photo for the invoice. Can be a photo of the goods or a marketing image for a service. People like it better when they see what they are paying for.
[IfFlag(0)] public InputWebDocument photo;
/// The actual invoice
public Invoice invoice;
/// Bot-defined invoice payload, 1-128 bytes. This will not be displayed to the user, use for your internal processes.
public byte[] payload;
/// Payments provider token, obtained via Botfather
public string provider;
/// JSON-encoded data about the invoice, which will be shared with the payment provider. A detailed description of required fields should be provided by the payment provider.
public DataJSON provider_data;
/// Start parameter
[IfFlag(1)] public string start_param;
[Flags] public enum Flags
{
/// Field has a value
has_photo = 0x1,
/// Field has a value
has_start_param = 0x2,
}
}
/// Live geolocation See
[TLDef(0x971FA843)]
public class InputMediaGeoLive : InputMedia
{
/// Flags, see TL conditional fields
public Flags flags;
/// Current geolocation
public InputGeoPoint geo_point;
/// For live locations, a direction in which the location moves, in degrees; 1-360.
[IfFlag(2)] public int heading;
/// Validity period of the current location
[IfFlag(1)] public int period;
/// For live locations, a maximum distance to another chat member for proximity alerts, in meters (0-100000)
[IfFlag(3)] public int proximity_notification_radius;
[Flags] public enum Flags
{
/// Whether sending of the geolocation was stopped
stopped = 0x1,
/// Field has a value
has_period = 0x2,
/// Field has a value
has_heading = 0x4,
/// Field has a value
has_proximity_notification_radius = 0x8,
}
}
/// A poll See
[TLDef(0x0F94E5F1)]
public class InputMediaPoll : InputMedia
{
/// Flags, see TL conditional fields
public Flags flags;
/// The poll to send
public Poll poll;
/// Correct answer IDs (for quiz polls)
[IfFlag(0)] public byte[][] correct_answers;
/// Explanation of quiz solution
[IfFlag(1)] public string solution;
/// Message entities for styled text
[IfFlag(1)] public MessageEntity[] solution_entities;
[Flags] public enum Flags
{
/// Field has a value
has_correct_answers = 0x1,
/// Field has a value
has_solution = 0x2,
}
}
/// Send a dice-based animated sticker See
[TLDef(0xE66FBF7B)]
public class InputMediaDice : InputMedia
{
/// The emoji, for now 🏀, 🎲 and 🎯 are supported
public string emoticon;
}
/// Defines a new group profile photo. Derived classes: , See
/// a null value means inputChatPhotoEmpty
public abstract class InputChatPhotoBase : IObject { }
/// New photo to be set as group profile photo. See
[TLDef(0xC642724E)]
public class InputChatUploadedPhoto : InputChatPhotoBase
{
/// Flags, see TL conditional fields
public Flags flags;
/// File saved in parts using the method upload.saveFilePart
[IfFlag(0)] public InputFileBase file;
/// Square video for animated profile picture
[IfFlag(1)] public InputFileBase video;
/// Timestamp that should be shown as static preview to the user (seconds)
[IfFlag(2)] public double video_start_ts;
[Flags] public enum Flags
{
/// Field has a value
has_file = 0x1,
/// Field has a value
has_video = 0x2,
/// Field has a value
has_video_start_ts = 0x4,
}
}
/// Existing photo to be set as a chat profile photo. See
[TLDef(0x8953AD37)]
public class InputChatPhoto : InputChatPhotoBase
{
/// Existing photo
public InputPhoto id;
}
/// Defines a GeoPoint by its coordinates. See
/// a null value means inputGeoPointEmpty
[TLDef(0x48222FAF)]
public class InputGeoPoint : IObject
{
/// Flags, see TL conditional fields
public Flags flags;
/// Latitide
public double lat;
/// Longtitude
public double long_;
/// The estimated horizontal accuracy of the location, in meters; as defined by the sender.
[IfFlag(0)] public int accuracy_radius;
[Flags] public enum Flags
{
/// Field has a value
has_accuracy_radius = 0x1,
}
}
/// Defines a photo for further interaction. See
/// a null value means inputPhotoEmpty
[TLDef(0x3BB3B94A)]
public class InputPhoto : IObject
{
/// Photo identifier
public long id;
/// ⚠ REQUIRED FIELD. See how to obtain it
access_hash value from the constructor
public long access_hash;
/// File reference
public byte[] file_reference;
}
/// Defines the location of a file for download. Derived classes: , , , , , , , , , See
public abstract class InputFileLocationBase : IObject { }
/// DEPRECATED location of a photo See
[TLDef(0xDFDAABE1)]
public class InputFileLocation : InputFileLocationBase
{
/// Server volume
public long volume_id;
/// File identifier
public int local_id;
/// Check sum to access the file
public long secret;
/// File reference
public byte[] file_reference;
}
/// Location of encrypted secret chat file. See
[TLDef(0xF5235D55)]
public class InputEncryptedFileLocation : InputFileLocationBase
{
/// File ID, id parameter value from
public long id;
/// ⚠ REQUIRED FIELD. See how to obtain it
Checksum, access_hash parameter value from
public long access_hash;
}
/// Document location (video, voice, audio, basically every type except photo) See
[TLDef(0xBAD07584)]
public class InputDocumentFileLocation : InputFileLocationBase
{
/// Document ID
public long id;
/// ⚠ REQUIRED FIELD. See how to obtain it
access_hash parameter from the constructor
public long access_hash;
/// File reference
public byte[] file_reference;
/// Thumbnail size to download the thumbnail
public string thumb_size;
}
/// Location of encrypted telegram passport file. See
[TLDef(0xCBC7EE28)]
public class InputSecureFileLocation : InputFileLocationBase
{
/// File ID, id parameter value from
public long id;
/// ⚠ REQUIRED FIELD. See how to obtain it
Checksum, access_hash parameter value from
public long access_hash;
}
/// Empty constructor for takeout See
[TLDef(0x29BE5899)]
public class InputTakeoutFileLocation : InputFileLocationBase { }
/// Use this object to download a photo with upload.getFile method See
[TLDef(0x40181FFE)]
public class InputPhotoFileLocation : InputFileLocationBase
{
/// Photo ID, obtained from the object
public long id;
/// ⚠ REQUIRED FIELD. See how to obtain it
Photo's access hash, obtained from the object
public long access_hash;
/// File reference
public byte[] file_reference;
/// The to download: must be set to the type field of the desired PhotoSize object of the
public string thumb_size;
}
/// DEPRECATED legacy photo file location See
[TLDef(0xD83466F3)]
public class InputPhotoLegacyFileLocation : InputFileLocationBase
{
/// Photo ID
public long id;
/// ⚠ REQUIRED FIELD. See how to obtain it
Access hash
public long access_hash;
/// File reference
public byte[] file_reference;
/// Volume ID
public long volume_id;
/// Local ID
public int local_id;
/// Secret
public long secret;
}
/// Location of profile photo of channel/group/supergroup/user See
[TLDef(0x37257E99)]
public class InputPeerPhotoFileLocation : InputFileLocationBase
{
/// Flags, see TL conditional fields
public Flags flags;
/// The peer whose profile picture should be downloaded
public InputPeer peer;
/// Photo ID
public long photo_id;
[Flags] public enum Flags
{
/// Whether to download the high-quality version of the picture
big = 0x1,
}
}
/// Location of stickerset thumbnail (see files) See
[TLDef(0x9D84F3DB)]
public class InputStickerSetThumb : InputFileLocationBase
{
/// Sticker set
public InputStickerSet stickerset;
/// Thumbnail version
public int thumb_version;
}
/// Chunk of a livestream See
[TLDef(0x0598A92A)]
public class InputGroupCallStream : InputFileLocationBase
{
/// Flags, see TL conditional fields
public Flags flags;
/// Livestream info
public InputGroupCall call;
/// Timestamp in milliseconds
public long time_ms;
/// Specifies the duration of the video segment to fetch in milliseconds, by bitshifting 1000 to the right scale times: duration_ms := 1000 >> scale
public int scale;
/// Selected video channel
[IfFlag(0)] public int video_channel;
/// Selected video quality (0 = lowest, 1 = medium, 2 = best)
[IfFlag(0)] public int video_quality;
[Flags] public enum Flags
{
/// Field has a value
has_video_channel = 0x1,
}
}
/// Chat partner or group. Derived classes: , , See
public abstract partial class Peer : IObject { }
/// Chat partner See
[TLDef(0x59511722)]
public partial class PeerUser : Peer
{
/// User identifier
public long user_id;
}
/// Group. See
[TLDef(0x36C6019A)]
public partial class PeerChat : Peer
{
/// Group identifier
public long chat_id;
}
/// Channel/supergroup See
[TLDef(0xA2A5371E)]
public partial class PeerChannel : Peer
{
/// Channel ID
public long channel_id;
}
/// Object describes the file type. See
public enum Storage_FileType : uint
{
///Unknown type.
unknown = 0xAA963B05,
///Part of a bigger file.
partial = 0x40BC6F52,
///JPEG image. MIME type: image/jpeg.
jpeg = 0x007EFE0E,
///GIF image. MIME type: image/gif.
gif = 0xCAE1AADF,
///PNG image. MIME type: image/png.
png = 0x0A4F63C0,
///PDF document image. MIME type: application/pdf.
pdf = 0xAE1E508D,
///Mp3 audio. MIME type: audio/mpeg.
mp3 = 0x528A0677,
///Quicktime video. MIME type: video/quicktime.
mov = 0x4B09EBBC,
///MPEG-4 video. MIME type: video/mp4.
mp4 = 0xB3CEA0E4,
///WEBP image. MIME type: image/webp.
webp = 0x1081464C,
}
/// Object defines a user. Derived classes: , See
public abstract partial class UserBase : IObject { }
/// Empty constructor, non-existent user. See
[TLDef(0xD3BC4B7A)]
public partial class UserEmpty : UserBase
{
/// User identifier or 0
public long id;
}
/// Indicates info about a certain user See
[TLDef(0x3FF6ECB0)]
public partial class User : UserBase
{
/// Flags, see TL conditional fields
public Flags flags;
/// ID of the user
public long id;
/// Access hash of the user
[IfFlag(0)] public long access_hash;
/// First name
[IfFlag(1)] public string first_name;
/// Last name
[IfFlag(2)] public string last_name;
/// Username
[IfFlag(3)] public string username;
/// Phone number
[IfFlag(4)] public string phone;
/// Profile picture of user
[IfFlag(5)] public UserProfilePhoto photo;
/// Online status of user
[IfFlag(6)] public UserStatus status;
/// Version of the , incremented every time it changes
[IfFlag(14)] public int bot_info_version;
/// Contains the reason why access to this user must be restricted.
[IfFlag(18)] public RestrictionReason[] restriction_reason;
/// Inline placeholder for this inline bot
[IfFlag(19)] public string bot_inline_placeholder;
/// Language code of the user
[IfFlag(22)] public string lang_code;
[Flags] public enum Flags
{
/// Field has a value
has_access_hash = 0x1,
/// Field has a value
has_first_name = 0x2,
/// Field has a value
has_last_name = 0x4,
/// Field has a value
has_username = 0x8,
/// Field has a value
has_phone = 0x10,
/// Field has a value
has_photo = 0x20,
/// Field has a value
has_status = 0x40,
/// Whether this user indicates the currently logged in user
self = 0x400,
/// Whether this user is a contact
contact = 0x800,
/// Whether this user is a mutual contact
mutual_contact = 0x1000,
/// Whether the account of this user was deleted
deleted = 0x2000,
/// Is this user a bot?
bot = 0x4000,
/// Can the bot see all messages in groups?
bot_chat_history = 0x8000,
/// Can the bot be added to groups?
bot_nochats = 0x10000,
/// Whether this user is verified
verified = 0x20000,
/// Access to this user must be restricted for the reason specified in restriction_reason
restricted = 0x40000,
/// Field has a value
has_bot_inline_placeholder = 0x80000,
/// See min
min = 0x100000,
/// Whether the bot can request our geolocation in inline mode
bot_inline_geo = 0x200000,
/// Field has a value
has_lang_code = 0x400000,
/// Whether this is an official support user
support = 0x800000,
/// This may be a scam user
scam = 0x1000000,
/// If set, the profile picture for this user should be refetched
apply_min_photo = 0x2000000,
/// If set, this user was reported by many users as a fake or scam user: be careful when interacting with them.
fake = 0x4000000,
}
}
/// User profile photo. See
/// a null value means userProfilePhotoEmpty
[TLDef(0x82D1F706)]
public class UserProfilePhoto : IObject
{
/// Flags, see TL conditional fields
public Flags flags;
/// Identifier of the respective photo
Parameter added in Layer 2
public long photo_id;
/// Stripped thumbnail
[IfFlag(1)] public byte[] stripped_thumb;
/// DC ID where the photo is stored
public int dc_id;
[Flags] public enum Flags
{
/// Whether an animated profile picture is available for this user
has_video = 0x1,
/// Field has a value
has_stripped_thumb = 0x2,
}
}
/// User online status Derived classes: , , , , See
/// a null value means userStatusEmpty
public abstract partial class UserStatus : IObject { }
/// Online status of the user. See
[TLDef(0xEDB93949)]
public partial class UserStatusOnline : UserStatus
{
/// Time to expiration of the current online status
public DateTime expires;
}
/// The user's offline status. See
[TLDef(0x008C703F)]
public partial class UserStatusOffline : UserStatus
{
/// Time the user was last seen online
public int was_online;
}
/// Online status: last seen recently See
[TLDef(0xE26F42F1)]
public partial class UserStatusRecently : UserStatus { }
/// Online status: last seen last week See
[TLDef(0x07BF09FC)]
public partial class UserStatusLastWeek : UserStatus { }
/// Online status: last seen last month See
[TLDef(0x77EBC742)]
public partial class UserStatusLastMonth : UserStatus { }
/// Object defines a group. Derived classes: , , , , See
public abstract partial class ChatBase : IObject
{
/// ID of the group
public abstract long ID { get; }
/// Title
public abstract string Title { get; }
}
/// Empty constructor, group doesn't exist See
[TLDef(0x29562865)]
public partial class ChatEmpty : ChatBase
{
/// Group identifier
public long id;
/// Group identifier
public override long ID => id;
public override string Title => default;
}
/// Info about a group See
[TLDef(0x41CBF256)]
public partial class Chat : ChatBase
{
/// Flags, see TL conditional fields
public Flags flags;
/// ID of the group
public long id;
/// Title
public string title;
/// Chat photo
public ChatPhoto photo;
/// Participant count
public int participants_count;
/// Date of creation of the group
public DateTime date;
/// Used in basic groups to reorder updates and make sure that all of them were received.
public int version;
/// Means this chat was upgraded to a supergroup
[IfFlag(6)] public InputChannelBase migrated_to;
/// Admin rights of the user in the group
[IfFlag(14)] public ChatAdminRights admin_rights;
/// Default banned rights of all users in the group
[IfFlag(18)] public ChatBannedRights default_banned_rights;
[Flags] public enum Flags
{
/// Whether the current user is the creator of the group
creator = 0x1,
/// Whether the current user was kicked from the group
kicked = 0x2,
/// Whether the current user has left the group
left = 0x4,
/// Whether the group was migrated
deactivated = 0x20,
/// Field has a value
has_migrated_to = 0x40,
/// Field has a value
has_admin_rights = 0x4000,
/// Field has a value
has_default_banned_rights = 0x40000,
/// Whether a group call is currently active
call_active = 0x800000,
/// Whether there's anyone in the group call
call_not_empty = 0x1000000,
noforwards = 0x2000000,
}
/// ID of the group
public override long ID => id;
/// Title
public override string Title => title;
}
/// A group to which the user has no access. E.g., because the user was kicked from the group. See
[TLDef(0x6592A1A7)]
public partial class ChatForbidden : ChatBase
{
/// User identifier
public long id;
/// Group name
public string title;
/// User identifier
public override long ID => id;
/// Group name
public override string Title => title;
}
/// Channel/supergroup info See
[TLDef(0x8261AC61)]
public partial class Channel : ChatBase
{
/// Flags, see TL conditional fields
public Flags flags;
/// ID of the channel
public long id;
/// Access hash
[IfFlag(13)] public long access_hash;
/// Title
public string title;
/// Username
[IfFlag(6)] public string username;
/// Profile photo
public ChatPhoto photo;
/// Date when the user joined the supergroup/channel, or if the user isn't a member, its creation date
public DateTime date;
/// Contains the reason why access to this channel must be restricted.
[IfFlag(9)] public RestrictionReason[] restriction_reason;
/// Admin rights of the user in this channel (see rights)
[IfFlag(14)] public ChatAdminRights admin_rights;
/// Banned rights of the user in this channel (see rights)
[IfFlag(15)] public ChatBannedRights banned_rights;
/// Default chat rights (see rights)
[IfFlag(18)] public ChatBannedRights default_banned_rights;
/// Participant count
[IfFlag(17)] public int participants_count;
[Flags] public enum Flags
{
/// Whether the current user is the creator of this channel
creator = 0x1,
/// Whether the current user has left this channel
left = 0x4,
/// Is this a channel?
broadcast = 0x20,
/// Field has a value
has_username = 0x40,
/// Is this channel verified by telegram?
verified = 0x80,
/// Is this a supergroup?
megagroup = 0x100,
/// Whether viewing/writing in this channel for a reason (see restriction_reason
restricted = 0x200,
/// Whether signatures are enabled (channels)
signatures = 0x800,
/// See min
min = 0x1000,
/// Field has a value
has_access_hash = 0x2000,
/// Field has a value
has_admin_rights = 0x4000,
/// Field has a value
has_banned_rights = 0x8000,
/// Field has a value
has_participants_count = 0x20000,
/// Field has a value
has_default_banned_rights = 0x40000,
/// This channel/supergroup is probably a scam
scam = 0x80000,
/// Whether this channel has a private join link
has_link = 0x100000,
/// Whether this chanel has a geoposition
has_geo = 0x200000,
/// Whether slow mode is enabled for groups to prevent flood in chat
slowmode_enabled = 0x400000,
/// Whether a group call or livestream is currently active
call_active = 0x800000,
/// Whether there's anyone in the group call or livestream
call_not_empty = 0x1000000,
/// If set, this supergroup/channel was reported by many users as a fake or scam: be careful when interacting with it.
fake = 0x2000000,
/// Whether this supergroup is a gigagroup
gigagroup = 0x4000000,
noforwards = 0x8000000,
}
/// ID of the channel
public override long ID => id;
/// Title
public override string Title => title;
}
/// Indicates a channel/supergroup we can't access because we were banned, or for some other reason. See
[TLDef(0x17D493D5)]
public partial class ChannelForbidden : ChatBase
{
/// Flags, see TL conditional fields
public Flags flags;
/// Channel ID
public long id;
/// Access hash
public long access_hash;
/// Title
public string title;
/// The ban is valid until the specified date
[IfFlag(16)] public DateTime until_date;
[Flags] public enum Flags
{
/// Is this a channel
broadcast = 0x20,
/// Is this a supergroup
megagroup = 0x100,
/// Field has a value
has_until_date = 0x10000,
}
/// Channel ID
public override long ID => id;
/// Title
public override string Title => title;
}
/// Object containing detailed group info Derived classes: , See
public abstract class ChatFullBase : IObject
{
/// ID of the chat
public abstract long ID { get; }
/// About string for this chat
public abstract string About { get; }
/// Chat photo
public abstract PhotoBase ChatPhoto { get; }
/// Notification settings
public abstract PeerNotifySettings NotifySettings { get; }
/// Chat invite
public abstract ExportedChatInvite ExportedInvite { get; }
/// Info about bots that are in this chat
public abstract BotInfo[] BotInfo { get; }
/// Message ID of the last pinned message
public abstract int PinnedMsg { get; }
/// Peer folder ID, for more info click here
public abstract int Folder { get; }
/// Group call information
public abstract InputGroupCall Call { get; }
/// Time-To-Live of messages sent by the current user to this chat
public abstract int TtlPeriod { get; }
/// When using phone.getGroupCallJoinAs to get a list of peers that can be used to join a group call, this field indicates the peer that should be selected by default.
public abstract Peer GroupcallDefaultJoinAs { get; }
/// Emoji representing a specific chat theme
public abstract string ThemeEmoticon { get; }
public abstract int RequestsPending { get; }
public abstract long[] RecentRequesters { get; }
public abstract string[] AvailableReactions { get; }
}
/// Detailed chat info See
[TLDef(0xD18EE226)]
public class ChatFull : ChatFullBase
{
/// Flags, see TL conditional fields
public Flags flags;
/// ID of the chat
public long id;
/// About string for this chat
public string about;
/// Participant list
public ChatParticipantsBase participants;
/// Chat photo
[IfFlag(2)] public PhotoBase chat_photo;
/// Notification settings
public PeerNotifySettings notify_settings;
/// Chat invite
[IfFlag(13)] public ExportedChatInvite exported_invite;
/// Info about bots that are in this chat
[IfFlag(3)] public BotInfo[] bot_info;
/// Message ID of the last pinned message
[IfFlag(6)] public int pinned_msg_id;
/// Peer folder ID, for more info click here
[IfFlag(11)] public int folder_id;
/// Group call information
[IfFlag(12)] public InputGroupCall call;
/// Time-To-Live of messages sent by the current user to this chat
[IfFlag(14)] public int ttl_period;
/// When using phone.getGroupCallJoinAs to get a list of peers that can be used to join a group call, this field indicates the peer that should be selected by default.
[IfFlag(15)] public Peer groupcall_default_join_as;
/// Emoji representing a specific chat theme
[IfFlag(16)] public string theme_emoticon;
[IfFlag(17)] public int requests_pending;
[IfFlag(17)] public long[] recent_requesters;
[IfFlag(18)] public string[] available_reactions;
[Flags] public enum Flags
{
/// Field has a value
has_chat_photo = 0x4,
/// Field has a value
has_bot_info = 0x8,
/// Field has a value
has_pinned_msg_id = 0x40,
/// Can we change the username of this chat
can_set_username = 0x80,
/// Whether scheduled messages are available
has_scheduled = 0x100,
/// Field has a value
has_folder_id = 0x800,
/// Field has a value
has_call = 0x1000,
/// Field has a value
has_exported_invite = 0x2000,
/// Field has a value
has_ttl_period = 0x4000,
/// Field has a value
has_groupcall_default_join_as = 0x8000,
/// Field has a value
has_theme_emoticon = 0x10000,
/// Field has a value
has_requests_pending = 0x20000,
/// Field has a value
has_available_reactions = 0x40000,
}
/// ID of the chat
public override long ID => id;
/// About string for this chat
public override string About => about;
/// Chat photo
public override PhotoBase ChatPhoto => chat_photo;
/// Notification settings
public override PeerNotifySettings NotifySettings => notify_settings;
/// Chat invite
public override ExportedChatInvite ExportedInvite => exported_invite;
/// Info about bots that are in this chat
public override BotInfo[] BotInfo => bot_info;
/// Message ID of the last pinned message
public override int PinnedMsg => pinned_msg_id;
/// Peer folder ID, for more info click here
public override int Folder => folder_id;
/// Group call information
public override InputGroupCall Call => call;
/// Time-To-Live of messages sent by the current user to this chat
public override int TtlPeriod => ttl_period;
/// When using phone.getGroupCallJoinAs to get a list of peers that can be used to join a group call, this field indicates the peer that should be selected by default.
public override Peer GroupcallDefaultJoinAs => groupcall_default_join_as;
/// Emoji representing a specific chat theme
public override string ThemeEmoticon => theme_emoticon;
public override int RequestsPending => requests_pending;
public override long[] RecentRequesters => recent_requesters;
public override string[] AvailableReactions => available_reactions;
}
/// Full info about a channel/supergroup See
[TLDef(0xE13C3D20)]
public class ChannelFull : ChatFullBase
{
/// Flags, see TL conditional fields
public Flags flags;
/// ID of the channel
public long id;
/// Info about the channel
public string about;
/// Number of participants of the channel
[IfFlag(0)] public int participants_count;
/// Number of channel admins
[IfFlag(1)] public int admins_count;
/// Number of users kicked from the channel
[IfFlag(2)] public int kicked_count;
/// Number of users banned from the channel
[IfFlag(2)] public int banned_count;
/// Number of users currently online
[IfFlag(13)] public int online_count;
/// Position up to which all incoming messages are read.
public int read_inbox_max_id;
/// Position up to which all outgoing messages are read.
public int read_outbox_max_id;
/// Count of unread messages
public int unread_count;
/// Channel picture
public PhotoBase chat_photo;
/// Notification settings
public PeerNotifySettings notify_settings;
/// Invite link
[IfFlag(23)] public ExportedChatInvite exported_invite;
/// Info about bots in the channel/supergrup
public BotInfo[] bot_info;
/// The chat ID from which this group was migrated
[IfFlag(4)] public long migrated_from_chat_id;
/// The message ID in the original chat at which this group was migrated
[IfFlag(4)] public int migrated_from_max_id;
/// Message ID of the last pinned message
[IfFlag(5)] public int pinned_msg_id;
/// Associated stickerset
[IfFlag(8)] public StickerSet stickerset;
/// Identifier of a maximum unavailable message in a channel due to hidden history.
[IfFlag(9)] public int available_min_id;
/// Peer folder ID, for more info click here
[IfFlag(11)] public int folder_id;
/// ID of the linked discussion chat for channels
[IfFlag(14)] public long linked_chat_id;
/// Location of the geogroup
[IfFlag(15)] public ChannelLocation location;
/// If specified, users in supergroups will only be able to send one message every slowmode_seconds seconds
[IfFlag(17)] public int slowmode_seconds;
/// Indicates when the user will be allowed to send another message in the supergroup (unixdate)
[IfFlag(18)] public DateTime slowmode_next_send_date;
/// If set, specifies the DC to use for fetching channel statistics
[IfFlag(12)] public int stats_dc;
/// Latest PTS for this channel
public int pts;
/// Livestream or group call information
[IfFlag(21)] public InputGroupCall call;
/// Time-To-Live of messages in this channel or supergroup
[IfFlag(24)] public int ttl_period;
/// A list of suggested actions for the supergroup admin, see here for more info ».
[IfFlag(25)] public string[] pending_suggestions;
/// When using phone.getGroupCallJoinAs to get a list of peers that can be used to join a group call, this field indicates the peer that should be selected by default.
[IfFlag(26)] public Peer groupcall_default_join_as;
/// Emoji representing a specific chat theme
[IfFlag(27)] public string theme_emoticon;
[IfFlag(28)] public int requests_pending;
[IfFlag(28)] public long[] recent_requesters;
[IfFlag(29)] public Peer default_send_as;
[IfFlag(30)] public string[] available_reactions;
[Flags] public enum Flags
{
/// Field has a value
has_participants_count = 0x1,
/// Field has a value
has_admins_count = 0x2,
/// Field has a value
has_kicked_count = 0x4,
/// Can we vew the participant list?
can_view_participants = 0x8,
/// Field has a value
has_migrated_from_chat_id = 0x10,
/// Field has a value
has_pinned_msg_id = 0x20,
/// Can we set the channel's username?
can_set_username = 0x40,
/// Can we associate a stickerpack to the supergroup?
can_set_stickers = 0x80,
/// Field has a value
has_stickerset = 0x100,
/// Field has a value
has_available_min_id = 0x200,
/// Is the history before we joined hidden to us?
hidden_prehistory = 0x400,
/// Field has a value
has_folder_id = 0x800,
/// Field has a value
has_stats_dc = 0x1000,
/// Field has a value
has_online_count = 0x2000,
/// Field has a value
has_linked_chat_id = 0x4000,
/// Field has a value
has_location = 0x8000,
/// Can we set the geolocation of this group (for geogroups)
can_set_location = 0x10000,
/// Field has a value
has_slowmode_seconds = 0x20000,
/// Field has a value
has_slowmode_next_send_date = 0x40000,
/// Whether scheduled messages are available
has_scheduled = 0x80000,
/// Can the user view channel/supergroup statistics
can_view_stats = 0x100000,
/// Field has a value
has_call = 0x200000,
/// Whether any anonymous admin of this supergroup was blocked: if set, you won't receive messages from anonymous group admins in discussion replies via @replies
blocked = 0x400000,
/// Field has a value
has_exported_invite = 0x800000,
/// Field has a value
has_ttl_period = 0x1000000,
/// Field has a value
has_pending_suggestions = 0x2000000,
/// Field has a value
has_groupcall_default_join_as = 0x4000000,
/// Field has a value
has_theme_emoticon = 0x8000000,
/// Field has a value
has_requests_pending = 0x10000000,
/// Field has a value
has_default_send_as = 0x20000000,
/// Field has a value
has_available_reactions = 0x40000000,
}
/// ID of the channel
public override long ID => id;
/// Info about the channel
public override string About => about;
/// Channel picture
public override PhotoBase ChatPhoto => chat_photo;
/// Notification settings
public override PeerNotifySettings NotifySettings => notify_settings;
/// Invite link
public override ExportedChatInvite ExportedInvite => exported_invite;
/// Info about bots in the channel/supergrup
public override BotInfo[] BotInfo => bot_info;
/// Message ID of the last pinned message
public override int PinnedMsg => pinned_msg_id;
/// Peer folder ID, for more info click here
public override int Folder => folder_id;
/// Livestream or group call information
public override InputGroupCall Call => call;
/// Time-To-Live of messages in this channel or supergroup
public override int TtlPeriod => ttl_period;
/// When using phone.getGroupCallJoinAs to get a list of peers that can be used to join a group call, this field indicates the peer that should be selected by default.
public override Peer GroupcallDefaultJoinAs => groupcall_default_join_as;
/// Emoji representing a specific chat theme
public override string ThemeEmoticon => theme_emoticon;
public override int RequestsPending => requests_pending;
public override long[] RecentRequesters => recent_requesters;
public override string[] AvailableReactions => available_reactions;
}
/// Details of a group member. Derived classes: , , See
public abstract partial class ChatParticipantBase : IObject
{
/// Member user ID
public abstract long UserId { get; }
}
/// Group member. See
[TLDef(0xC02D4007)]
public partial class ChatParticipant : ChatParticipantBase
{
/// Member user ID
public long user_id;
/// ID of the user that added the member to the group
public long inviter_id;
/// Date added to the group
public DateTime date;
/// Member user ID
public override long UserId => user_id;
}
/// Represents the creator of the group See
[TLDef(0xE46BCEE4)]
public partial class ChatParticipantCreator : ChatParticipantBase
{
/// ID of the user that created the group
public long user_id;
/// ID of the user that created the group
public override long UserId => user_id;
}
/// Chat admin See
[TLDef(0xA0933F5B)]
public partial class ChatParticipantAdmin : ChatParticipant
{
}
/// Object contains info on group members. Derived classes: , See
public abstract class ChatParticipantsBase : IObject
{
/// Group ID
public abstract long ChatId { get; }
}
/// Info on members is unavailable See
[TLDef(0x8763D3E1)]
public class ChatParticipantsForbidden : ChatParticipantsBase
{
/// Flags, see TL conditional fields
public Flags flags;
/// Group ID
public long chat_id;
/// Info about the group membership of the current user
[IfFlag(0)] public ChatParticipantBase self_participant;
[Flags] public enum Flags
{
/// Field has a value
has_self_participant = 0x1,
}
/// Group ID
public override long ChatId => chat_id;
}
/// Group members. See
[TLDef(0x3CBC93F8)]
public class ChatParticipants : ChatParticipantsBase
{
/// Group identifier
public long chat_id;
/// List of group members
public ChatParticipantBase[] participants;
/// Group version number
public int version;
/// Group identifier
public override long ChatId => chat_id;
}
/// Group profile photo. See
/// a null value means chatPhotoEmpty
[TLDef(0x1C6E1C11)]
public class ChatPhoto : IObject
{
/// Flags, see TL conditional fields
public Flags flags;
/// Photo ID
public long photo_id;
/// Stripped thumbnail
[IfFlag(1)] public byte[] stripped_thumb;
/// DC where this photo is stored
public int dc_id;
[Flags] public enum Flags
{
/// Whether the user has an animated profile picture
has_video = 0x1,
/// Field has a value
has_stripped_thumb = 0x2,
}
}
/// Object describing a message. Derived classes: , , See
public abstract class MessageBase : IObject
{
/// ID of the message
public abstract int ID { get; }
/// ID of the sender of the message
public abstract Peer From { get; }
/// Peer ID, the chat where this message was sent
public abstract Peer Peer { get; }
/// Reply information
public abstract MessageReplyHeader ReplyTo { get; }
/// Date of the message
public abstract DateTime Date { get; }
/// Time To Live of the message, once message.date+message.ttl_period === time(), the message will be deleted on the server, and must be deleted locally as well.
public abstract int TtlPeriod { get; }
}
/// Empty constructor, non-existent message. See
[TLDef(0x90A6CA84)]
public class MessageEmpty : MessageBase
{
/// Flags, see TL conditional fields
public Flags flags;
/// Message identifier
public int id;
/// Peer ID, the chat where this message was sent
[IfFlag(0)] public Peer peer_id;
[Flags] public enum Flags
{
/// Field has a value
has_peer_id = 0x1,
}
/// Message identifier
public override int ID => id;
public override Peer From => default;
/// Peer ID, the chat where this message was sent
public override Peer Peer => peer_id;
public override MessageReplyHeader ReplyTo => default;
public override DateTime Date => default;
public override int TtlPeriod => default;
}
/// A message See
[TLDef(0x38116EE0)]
public class Message : MessageBase
{
/// Flags, see TL conditional fields
public Flags flags;
/// ID of the message
public int id;
/// ID of the sender of the message
[IfFlag(8)] public Peer from_id;
/// Peer ID, the chat where this message was sent
public Peer peer_id;
/// Info about forwarded messages
[IfFlag(2)] public MessageFwdHeader fwd_from;
/// ID of the inline bot that generated the message
[IfFlag(11)] public long via_bot_id;
/// Reply information
[IfFlag(3)] public MessageReplyHeader reply_to;
/// Date of the message
public DateTime date;
/// The message
public string message;
/// Media attachment
[IfFlag(9)] public MessageMedia media;
/// Reply markup (bot/inline keyboards)
[IfFlag(6)] public ReplyMarkup reply_markup;
/// Message entities for styled text
[IfFlag(7)] public MessageEntity[] entities;
/// View count for channel posts
[IfFlag(10)] public int views;
/// Forward counter
[IfFlag(10)] public int forwards;
/// Info about post comments (for channels) or message replies (for groups)
[IfFlag(23)] public MessageReplies replies;
/// Last edit date of this message
[IfFlag(15)] public DateTime edit_date;
/// Name of the author of this message for channel posts (with signatures enabled)
[IfFlag(16)] public string post_author;
/// Multiple media messages sent using messages.sendMultiMedia with the same grouped ID indicate an album or media group
[IfFlag(17)] public long grouped_id;
[IfFlag(20)] public MessageReactions reactions;
/// Contains the reason why access to this message must be restricted.
[IfFlag(22)] public RestrictionReason[] restriction_reason;
/// Time To Live of the message, once message.date+message.ttl_period === time(), the message will be deleted on the server, and must be deleted locally as well.
[IfFlag(25)] public int ttl_period;
[Flags] public enum Flags
{
/// Is this an outgoing message
out_ = 0x2,
/// Field has a value
has_fwd_from = 0x4,
/// Field has a value
has_reply_to = 0x8,
/// Whether we were mentioned in this message
mentioned = 0x10,
/// Whether there are unread media attachments in this message
media_unread = 0x20,
/// Field has a value
has_reply_markup = 0x40,
/// Field has a value
has_entities = 0x80,
/// Field has a value
has_from_id = 0x100,
/// Field has a value
has_media = 0x200,
/// Field has a value
has_views = 0x400,
/// Field has a value
has_via_bot_id = 0x800,
/// Whether this is a silent message (no notification triggered)
silent = 0x2000,
/// Whether this is a channel post
post = 0x4000,
/// Field has a value
has_edit_date = 0x8000,
/// Field has a value
has_post_author = 0x10000,
/// Field has a value
has_grouped_id = 0x20000,
/// Whether this is a scheduled message
from_scheduled = 0x40000,
/// This is a legacy message: it has to be refetched with the new layer
legacy = 0x80000,
/// Field has a value
has_reactions = 0x100000,
/// Whether the message should be shown as not modified to the user, even if an edit date is present
edit_hide = 0x200000,
/// Field has a value
has_restriction_reason = 0x400000,
/// Field has a value
has_replies = 0x800000,
/// Whether this message is pinned
pinned = 0x1000000,
/// Field has a value
has_ttl_period = 0x2000000,
noforwards = 0x4000000,
}
/// ID of the message
public override int ID => id;
/// ID of the sender of the message
public override Peer From => from_id;
/// Peer ID, the chat where this message was sent
public override Peer Peer => peer_id;
/// Reply information
public override MessageReplyHeader ReplyTo => reply_to;
/// Date of the message
public override DateTime Date => date;
/// Time To Live of the message, once message.date+message.ttl_period === time(), the message will be deleted on the server, and must be deleted locally as well.
public override int TtlPeriod => ttl_period;
}
/// Indicates a service message See
[TLDef(0x2B085862)]
public class MessageService : MessageBase
{
/// Flags, see TL conditional fields
public Flags flags;
/// Message ID
public int id;
/// ID of the sender of this message
[IfFlag(8)] public Peer from_id;
/// Sender of service message
public Peer peer_id;
/// Reply (thread) information
[IfFlag(3)] public MessageReplyHeader reply_to;
/// Message date
public DateTime date;
/// Event connected with the service message
public MessageAction action;
/// Time To Live of the message, once message.date+message.ttl_period === time(), the message will be deleted on the server, and must be deleted locally as well.
[IfFlag(25)] public int ttl_period;
[Flags] public enum Flags
{
/// Whether the message is outgoing
out_ = 0x2,
/// Field has a value
has_reply_to = 0x8,
/// Whether we were mentioned in the message
mentioned = 0x10,
/// Whether the message contains unread media
media_unread = 0x20,
/// Field has a value
has_from_id = 0x100,
/// Whether the message is silent
silent = 0x2000,
/// Whether it's a channel post
post = 0x4000,
/// This is a legacy message: it has to be refetched with the new layer
legacy = 0x80000,
/// Field has a value
has_ttl_period = 0x2000000,
}
/// Message ID
public override int ID => id;
/// ID of the sender of this message
public override Peer From => from_id;
/// Sender of service message
public override Peer Peer => peer_id;
/// Reply (thread) information
public override MessageReplyHeader ReplyTo => reply_to;
/// Message date
public override DateTime Date => date;
/// Time To Live of the message, once message.date+message.ttl_period === time(), the message will be deleted on the server, and must be deleted locally as well.
public override int TtlPeriod => ttl_period;
}
/// Media Derived classes: , , , , , , , , , , , See
/// a null value means messageMediaEmpty
public abstract class MessageMedia : IObject { }
/// Attached photo. See
[TLDef(0x695150D7)]
public class MessageMediaPhoto : MessageMedia
{
/// Flags, see TL conditional fields
public Flags flags;
/// Photo
[IfFlag(0)] public PhotoBase photo;
/// Time to live in seconds of self-destructing photo
[IfFlag(2)] public int ttl_seconds;
[Flags] public enum Flags
{
/// Field has a value
has_photo = 0x1,
/// Field has a value
has_ttl_seconds = 0x4,
}
}
/// Attached map. See
[TLDef(0x56E0D474)]
public class MessageMediaGeo : MessageMedia
{
/// GeoPoint
public GeoPoint geo;
}
/// Attached contact. See
[TLDef(0x70322949)]
public class MessageMediaContact : MessageMedia
{
/// Phone number
public string phone_number;
/// Contact's first name
public string first_name;
/// Contact's last name
public string last_name;
/// VCARD of contact
public string vcard;
/// User identifier or 0, if the user with the given phone number is not registered
public long user_id;
}
/// Current version of the client does not support this media type. See
[TLDef(0x9F84F49E)]
public class MessageMediaUnsupported : MessageMedia { }
/// Document (video, audio, voice, sticker, any media type except photo) See
[TLDef(0x9CB070D7)]
public class MessageMediaDocument : MessageMedia
{
/// Flags, see TL conditional fields
public Flags flags;
/// Attached document
[IfFlag(0)] public DocumentBase document;
/// Time to live of self-destructing document
[IfFlag(2)] public int ttl_seconds;
[Flags] public enum Flags
{
/// Field has a value
has_document = 0x1,
/// Field has a value
has_ttl_seconds = 0x4,
}
}
/// Preview of webpage See
[TLDef(0xA32DD600)]
public class MessageMediaWebPage : MessageMedia
{
/// Webpage preview
public WebPageBase webpage;
}
/// Venue See
[TLDef(0x2EC0533F)]
public class MessageMediaVenue : MessageMedia
{
/// Geolocation of venue
public GeoPoint geo;
/// Venue name
public string title;
/// Address
public string address;
/// Venue provider: currently only "foursquare" needs to be supported
public string provider;
/// Venue ID in the provider's database
public string venue_id;
/// Venue type in the provider's database
public string venue_type;
}
/// Telegram game See
[TLDef(0xFDB19008)]
public class MessageMediaGame : MessageMedia
{
/// Game
public Game game;
}
/// Invoice See
[TLDef(0x84551347)]
public class MessageMediaInvoice : MessageMedia
{
/// Flags, see TL conditional fields
public Flags flags;
/// Product name, 1-32 characters
public string title;
/// Product description, 1-255 characters
public string description;
/// URL of the product photo for the invoice. Can be a photo of the goods or a marketing image for a service. People like it better when they see what they are paying for.
[IfFlag(0)] public WebDocumentBase photo;
/// Message ID of receipt: if set, clients should change the text of the first button always attached to the to a localized version of the word Receipt
[IfFlag(2)] public int receipt_msg_id;
/// Three-letter ISO 4217 currency code
public string currency;
/// Total price in the smallest units of the currency (integer, not float/double). For example, for a price of US$ 1.45 pass amount = 145. See the exp parameter in currencies.json, it shows the number of digits past the decimal point for each currency (2 for the majority of currencies).
public long total_amount;
/// Unique bot deep-linking parameter that can be used to generate this invoice
public string start_param;
[Flags] public enum Flags
{
/// Field has a value
has_photo = 0x1,
/// Whether the shipping address was requested
shipping_address_requested = 0x2,
/// Field has a value
has_receipt_msg_id = 0x4,
/// Whether this is an example invoice
test = 0x8,
}
}
/// Indicates a live geolocation See
[TLDef(0xB940C666)]
public class MessageMediaGeoLive : MessageMedia
{
/// Flags, see TL conditional fields
public Flags flags;
/// Geolocation
public GeoPoint geo;
/// For live locations, a direction in which the location moves, in degrees; 1-360
[IfFlag(0)] public int heading;
/// Validity period of provided geolocation
public int period;
/// For live locations, a maximum distance to another chat member for proximity alerts, in meters (0-100000).
[IfFlag(1)] public int proximity_notification_radius;
[Flags] public enum Flags
{
/// Field has a value
has_heading = 0x1,
/// Field has a value
has_proximity_notification_radius = 0x2,
}
}
/// Poll See
[TLDef(0x4BD6E798)]
public class MessageMediaPoll : MessageMedia
{
/// The poll
public Poll poll;
/// The results of the poll
public PollResults results;
}
/// Dice-based animated sticker See
[TLDef(0x3F7EE58B)]
public class MessageMediaDice : MessageMedia
{
/// Dice value
public int value;
/// The emoji, for now 🏀, 🎲 and 🎯 are supported
public string emoticon;
}
/// Object describing actions connected to a service message. Derived classes: , , , , , , , , , , , , , , , , , , , , , , , , , , , See
/// a null value means messageActionEmpty
public abstract class MessageAction : IObject { }
/// Group created See
[TLDef(0xBD47CBAD)]
public class MessageActionChatCreate : MessageAction
{
/// Group name
public string title;
/// List of group members
public long[] users;
}
/// Group name changed. See
[TLDef(0xB5A1CE5A)]
public class MessageActionChatEditTitle : MessageAction
{
/// New group name
public string title;
}
/// Group profile changed See
[TLDef(0x7FCB13A8)]
public class MessageActionChatEditPhoto : MessageAction
{
/// New group pofile photo
public PhotoBase photo;
}
/// Group profile photo removed. See
[TLDef(0x95E3FBEF)]
public class MessageActionChatDeletePhoto : MessageAction { }
/// New member in the group See
[TLDef(0x15CEFD00)]
public class MessageActionChatAddUser : MessageAction
{
/// Users that were invited to the chat
public long[] users;
}
/// User left the group. See
[TLDef(0xA43F30CC)]
public class MessageActionChatDeleteUser : MessageAction
{
/// Leaving user ID
public long user_id;
}
/// A user joined the chat via an invite link See
[TLDef(0x031224C3)]
public class MessageActionChatJoinedByLink : MessageAction
{
/// ID of the user that created the invite link
public long inviter_id;
}
/// The channel was created See
[TLDef(0x95D2AC92)]
public class MessageActionChannelCreate : MessageAction
{
/// Original channel/supergroup title
public string title;
}
/// Indicates the chat was migrated to the specified supergroup See
[TLDef(0xE1037F92)]
public class MessageActionChatMigrateTo : MessageAction
{
/// The supergroup it was migrated to
public long channel_id;
}
/// Indicates the channel was migrated from the specified chat See
[TLDef(0xEA3948E9)]
public class MessageActionChannelMigrateFrom : MessageAction
{
/// The old chat tite
public string title;
/// The old chat ID
public long chat_id;
}
/// A message was pinned See
[TLDef(0x94BD38ED)]
public class MessageActionPinMessage : MessageAction { }
/// Chat history was cleared See
[TLDef(0x9FBAB604)]
public class MessageActionHistoryClear : MessageAction { }
/// Someone scored in a game See
[TLDef(0x92A72876)]
public class MessageActionGameScore : MessageAction
{
/// Game ID
public long game_id;
/// Score
public int score;
}
/// A user just sent a payment to me (a bot) See
[TLDef(0x8F31B327)]
public class MessageActionPaymentSentMe : MessageAction
{
/// Flags, see TL conditional fields
public Flags flags;
/// Three-letter ISO 4217 currency code
public string currency;
/// Price of the product in the smallest units of the currency (integer, not float/double). For example, for a price of US$ 1.45 pass amount = 145. See the exp parameter in currencies.json, it shows the number of digits past the decimal point for each currency (2 for the majority of currencies).
public long total_amount;
/// Bot specified invoice payload
public byte[] payload;
/// Order info provided by the user
[IfFlag(0)] public PaymentRequestedInfo info;
/// Identifier of the shipping option chosen by the user
[IfFlag(1)] public string shipping_option_id;
/// Provider payment identifier
public PaymentCharge charge;
[Flags] public enum Flags
{
/// Field has a value
has_info = 0x1,
/// Field has a value
has_shipping_option_id = 0x2,
}
}
/// A payment was sent See
[TLDef(0x40699CD0)]
public class MessageActionPaymentSent : MessageAction
{
/// Three-letter ISO 4217 currency code
public string currency;
/// Price of the product in the smallest units of the currency (integer, not float/double). For example, for a price of US$ 1.45 pass amount = 145. See the exp parameter in currencies.json, it shows the number of digits past the decimal point for each currency (2 for the majority of currencies).
public long total_amount;
}
/// A phone call See
[TLDef(0x80E11A7F)]
public class MessageActionPhoneCall : MessageAction
{
/// Flags, see TL conditional fields
public Flags flags;
/// Call ID
public long call_id;
/// If the call has ended, the reason why it ended
[IfFlag(0)] public PhoneCallDiscardReason reason;
/// Duration of the call in seconds
[IfFlag(1)] public int duration;
[Flags] public enum Flags
{
/// Field has a value
has_reason = 0x1,
/// Field has a value
has_duration = 0x2,
/// Is this a video call?
video = 0x4,
}
}
/// A screenshot of the chat was taken See
[TLDef(0x4792929B)]
public class MessageActionScreenshotTaken : MessageAction { }
/// Custom action (most likely not supported by the current layer, an upgrade might be needed) See
[TLDef(0xFAE69F56)]
public class MessageActionCustomAction : MessageAction
{
/// Action message
public string message;
}
/// The domain name of the website on which the user has logged in. More about Telegram Login » See
[TLDef(0xABE9AFFE)]
public class MessageActionBotAllowed : MessageAction
{
/// The domain name of the website on which the user has logged in.
public string domain;
}
/// Secure telegram passport values were received See
[TLDef(0x1B287353)]
public class MessageActionSecureValuesSentMe : MessageAction
{
/// Vector with information about documents and other Telegram Passport elements that were shared with the bot
public SecureValue[] values;
/// Encrypted credentials required to decrypt the data
public SecureCredentialsEncrypted credentials;
}
/// Request for secure telegram passport values was sent See
[TLDef(0xD95C6154)]
public class MessageActionSecureValuesSent : MessageAction
{
/// Secure value types
public SecureValueType[] types;
}
/// A contact just signed up to telegram See
[TLDef(0xF3F25F76)]
public class MessageActionContactSignUp : MessageAction { }
/// A user of the chat is now in proximity of another user See
[TLDef(0x98E0D697)]
public class MessageActionGeoProximityReached : MessageAction
{
/// The user or chat that is now in proximity of to_id
public Peer from_id;
/// The user or chat that subscribed to live geolocation proximity alerts
public Peer to_id;
/// Distance, in meters (0-100000)
public int distance;
}
/// The group call has ended See
[TLDef(0x7A0D7F42)]
public class MessageActionGroupCall : MessageAction
{
/// Flags, see TL conditional fields
public Flags flags;
/// Group call
public InputGroupCall call;
/// Group call duration
[IfFlag(0)] public int duration;
[Flags] public enum Flags
{
/// Field has a value
has_duration = 0x1,
}
}
/// A set of users was invited to the group call See
[TLDef(0x502F92F7)]
public class MessageActionInviteToGroupCall : MessageAction
{
/// The group call
public InputGroupCall call;
/// The invited users
public long[] users;
}
/// The Time-To-Live of messages in this chat was changed. See
[TLDef(0xAA1AFBFD)]
public class MessageActionSetMessagesTTL : MessageAction
{
/// New Time-To-Live
public int period;
}
/// A group call was scheduled See
[TLDef(0xB3A07661)]
public class MessageActionGroupCallScheduled : MessageAction
{
/// The group call
public InputGroupCall call;
/// When is this group call scheduled to start
public DateTime schedule_date;
}
/// The chat theme was changed See
[TLDef(0xAA786345)]
public class MessageActionSetChatTheme : MessageAction
{
/// The emoji that identifies a chat theme
public string emoticon;
}
/// See
[TLDef(0xEBBCA3CB)]
public class MessageActionChatJoinedByRequest : MessageAction { }
/// Chat info. Derived classes: , See
public abstract class DialogBase : IObject
{
/// The chat
public abstract Peer Peer { get; }
/// The latest message ID
public abstract int TopMessage { get; }
}
/// Chat See
[TLDef(0x2C171F72)]
public class Dialog : DialogBase
{
/// Flags, see TL conditional fields
public Flags flags;
/// The chat
public Peer peer;
/// The latest message ID
public int top_message;
/// Position up to which all incoming messages are read.
public int read_inbox_max_id;
/// Position up to which all outgoing messages are read.
public int read_outbox_max_id;
/// Number of unread messages
public int unread_count;
/// Number of unread mentions
public int unread_mentions_count;
/// Notification settings
public PeerNotifySettings notify_settings;
/// PTS
[IfFlag(0)] public int pts;
/// Message draft
[IfFlag(1)] public DraftMessageBase draft;
/// Peer folder ID, for more info click here
[IfFlag(4)] public int folder_id;
[Flags] public enum Flags
{
/// Field has a value
has_pts = 0x1,
/// Field has a value
has_draft = 0x2,
/// Is the dialog pinned
pinned = 0x4,
/// Whether the chat was manually marked as unread
unread_mark = 0x8,
/// Field has a value
has_folder_id = 0x10,
}
/// The chat
public override Peer Peer => peer;
/// The latest message ID
public override int TopMessage => top_message;
}
/// Dialog in folder See
[TLDef(0x71BD134C)]
public class DialogFolder : DialogBase
{
/// Flags, see TL conditional fields
public Flags flags;
/// The folder
public Folder folder;
/// Peer in folder
public Peer peer;
/// Latest message ID of dialog
public int top_message;
/// Number of unread muted peers in folder
public int unread_muted_peers_count;
/// Number of unread unmuted peers in folder
public int unread_unmuted_peers_count;
/// Number of unread messages from muted peers in folder
public int unread_muted_messages_count;
/// Number of unread messages from unmuted peers in folder
public int unread_unmuted_messages_count;
[Flags] public enum Flags
{
/// Is this folder pinned
pinned = 0x4,
}
/// Peer in folder
public override Peer Peer => peer;
/// Latest message ID of dialog
public override int TopMessage => top_message;
}
/// Object describes a photo. Derived classes: , See
public abstract partial class PhotoBase : IObject { }
/// Empty constructor, non-existent photo See
[TLDef(0x2331B22D)]
public partial class PhotoEmpty : PhotoBase
{
/// Photo identifier
public long id;
}
/// Photo See
[TLDef(0xFB197A65)]
public partial class Photo : PhotoBase
{
/// Flags, see TL conditional fields
public Flags flags;
/// ID
public long id;
/// Access hash
public long access_hash;
/// file reference
public byte[] file_reference;
/// Date of upload
public DateTime date;
/// Available sizes for download
public PhotoSizeBase[] sizes;
/// For animated profiles, the MPEG4 videos
[IfFlag(1)] public VideoSize[] video_sizes;
/// DC ID to use for download
public int dc_id;
[Flags] public enum Flags
{
/// Whether the photo has mask stickers attached to it
has_stickers = 0x1,
/// Field has a value
has_video_sizes = 0x2,
}
}
/// Location of a certain size of a picture Derived classes: , , , , , See
public abstract partial class PhotoSizeBase : IObject
{
/// Thumbnail type (see. )
public abstract string Type { get; }
}
/// Empty constructor. Image with this thumbnail is unavailable. See
[TLDef(0x0E17E23C)]
public partial class PhotoSizeEmpty : PhotoSizeBase
{
/// Thumbnail type (see. )
public string type;
/// Thumbnail type (see. )
public override string Type => type;
}
/// Image description. See
[TLDef(0x75C78E60)]
public partial class PhotoSize : PhotoSizeBase
{
/// Thumbnail type
public string type;
/// Image width
public int w;
/// Image height
public int h;
/// File size
public int size;
/// Thumbnail type
public override string Type => type;
}
/// Description of an image and its content. See
[TLDef(0x021E1AD6)]
public partial class PhotoCachedSize : PhotoSizeBase
{
/// Thumbnail type
public string type;
/// Image width
public int w;
/// Image height
public int h;
/// Binary data, file content
public byte[] bytes;
/// Thumbnail type
public override string Type => type;
}
/// A low-resolution compressed JPG payload See
[TLDef(0xE0B0BC2E)]
public partial class PhotoStrippedSize : PhotoSizeBase
{
/// Thumbnail type
public string type;
/// Thumbnail data, see here for more info on decompression »
public byte[] bytes;
/// Thumbnail type
public override string Type => type;
}
/// Progressively encoded photosize See
[TLDef(0xFA3EFB95)]
public partial class PhotoSizeProgressive : PhotoSizeBase
{
/// Photosize type
public string type;
/// Photo width
public int w;
/// Photo height
public int h;
/// Sizes of progressive JPEG file prefixes, which can be used to preliminarily show the image.
public int[] sizes;
/// Photosize type
public override string Type => type;
}
/// Messages with animated stickers can have a compressed svg (< 300 bytes) to show the outline of the sticker before fetching the actual lottie animation. See
[TLDef(0xD8214D41)]
public partial class PhotoPathSize : PhotoSizeBase
{
/// Always j
public string type;
/// Compressed SVG path payload, see here for decompression instructions
public byte[] bytes;
/// Always j
public override string Type => type;
}
/// GeoPoint. See
/// a null value means geoPointEmpty
[TLDef(0xB2A2F663)]
public class GeoPoint : IObject
{
/// Flags, see TL conditional fields
public Flags flags;
/// Longtitude
public double long_;
/// Latitude
public double lat;
/// Access hash
public long access_hash;
/// The estimated horizontal accuracy of the location, in meters; as defined by the sender.
[IfFlag(0)] public int accuracy_radius;
[Flags] public enum Flags
{
/// Field has a value
has_accuracy_radius = 0x1,
}
}
/// Contains info about a sent verification code. See
[TLDef(0x5E002502)]
public class Auth_SentCode : IObject
{
/// Flags, see TL conditional fields
public Flags flags;
/// Phone code type
public Auth_SentCodeType type;
/// Phone code hash, to be stored and later re-used with auth.signIn
public string phone_code_hash;
/// Phone code type that will be sent next, if the phone code is not received within timeout seconds: to send it use auth.resendCode
[IfFlag(1)] public Auth_CodeType next_type;
/// Timeout for reception of the phone code
[IfFlag(2)] public int timeout;
[Flags] public enum Flags
{
/// Field has a value
has_next_type = 0x2,
/// Field has a value
has_timeout = 0x4,
}
}
/// Oject contains info on user authorization. Derived classes: , See
public abstract class Auth_AuthorizationBase : IObject { }
/// Contains user authorization info. See
[TLDef(0x33FB7BB8)]
public class Auth_Authorization : Auth_AuthorizationBase
{
/// Flags, see TL conditional fields
public Flags flags;
[IfFlag(1)] public int otherwise_relogin_days;
/// Temporary passport sessions
[IfFlag(0)] public int tmp_sessions;
/// Info on authorized user
public UserBase user;
[Flags] public enum Flags
{
/// Field has a value
has_tmp_sessions = 0x1,
setup_password_required = 0x2,
}
}
/// An account with this phone number doesn't exist on telegram: the user has to enter basic information and sign up See
[TLDef(0x44747E9A)]
public class Auth_AuthorizationSignUpRequired : Auth_AuthorizationBase
{
/// Flags, see TL conditional fields
public Flags flags;
/// Telegram's terms of service: the user must read and accept the terms of service before signing up to telegram
[IfFlag(0)] public Help_TermsOfService terms_of_service;
[Flags] public enum Flags
{
/// Field has a value
has_terms_of_service = 0x1,
}
}
/// Data for copying of authorization between data centres. See
[TLDef(0xB434E2B8)]
public class Auth_ExportedAuthorization : IObject
{
/// current user identifier
public long id;
/// authorizes key
public byte[] bytes;
}
/// Object defines the set of users and/or groups that generate notifications. Derived classes: , , , See
public abstract class InputNotifyPeerBase : IObject { }
/// Notifications generated by a certain user or group. See
[TLDef(0xB8BC5B0C)]
public class InputNotifyPeer : InputNotifyPeerBase
{
/// User or group
public InputPeer peer;
}
/// Notifications generated by all users. See
[TLDef(0x193B4417)]
public class InputNotifyUsers : InputNotifyPeerBase { }
/// Notifications generated by all groups. See
[TLDef(0x4A95E84E)]
public class InputNotifyChats : InputNotifyPeerBase { }
/// All channels See
[TLDef(0xB1DB7C7E)]
public class InputNotifyBroadcasts : InputNotifyPeerBase { }
/// Notification settings. See
[TLDef(0x9C3D198E)]
public class InputPeerNotifySettings : IObject
{
/// Flags, see TL conditional fields
public Flags flags;
/// If the text of the message shall be displayed in notification
[IfFlag(0)] public bool show_previews;
/// Peer was muted?
[IfFlag(1)] public bool silent;
/// Date until which all notifications shall be switched off
[IfFlag(2)] public int mute_until;
/// Name of an audio file for notification
[IfFlag(3)] public string sound;
[Flags] public enum Flags
{
/// Field has a value
has_show_previews = 0x1,
/// Field has a value
has_silent = 0x2,
/// Field has a value
has_mute_until = 0x4,
/// Field has a value
has_sound = 0x8,
}
}
/// Notification settings. See
[TLDef(0xAF509D20)]
public class PeerNotifySettings : IObject
{
/// Flags, see TL conditional fields
public Flags flags;
/// Display text in notifications
[IfFlag(0)] public bool show_previews;
/// Mute peer?
[IfFlag(1)] public bool silent;
/// Mute all notifications until this date
[IfFlag(2)] public int mute_until;
/// Audio file name for notifications
[IfFlag(3)] public string sound;
[Flags] public enum Flags
{
/// Field has a value
has_show_previews = 0x1,
/// Field has a value
has_silent = 0x2,
/// Field has a value
has_mute_until = 0x4,
/// Field has a value
has_sound = 0x8,
}
}
/// Peer settings See
[TLDef(0xA518110D)]
public class PeerSettings : IObject
{
/// Flags, see TL conditional fields
public Flags flags;
/// Distance in meters between us and this peer
[IfFlag(6)] public int geo_distance;
[IfFlag(9)] public string request_chat_title;
[IfFlag(9)] public DateTime request_chat_date;
[Flags] public enum Flags
{
/// Whether we can still report the user for spam
report_spam = 0x1,
/// Whether we can add the user as contact
add_contact = 0x2,
/// Whether we can block the user
block_contact = 0x4,
/// Whether we can share the user's contact
share_contact = 0x8,
/// Whether a special exception for contacts is needed
need_contacts_exception = 0x10,
/// Whether we can report a geogroup is irrelevant for this location
report_geo = 0x20,
/// Field has a value
has_geo_distance = 0x40,
/// Whether this peer was automatically archived according to
autoarchived = 0x80,
/// Whether we can invite members to a group or channel
invite_members = 0x100,
/// Field has a value
has_request_chat_title = 0x200,
request_chat_broadcast = 0x400,
}
}
/// Object contains info on a wallpaper. Derived classes: , See
public abstract class WallPaperBase : IObject
{
/// Identifier
public abstract long ID { get; }
/// Wallpaper settings
public abstract WallPaperSettings Settings { get; }
}
/// Wallpaper settings. See
[TLDef(0xA437C3ED)]
public class WallPaper : WallPaperBase
{
/// Identifier
public long id;
/// Flags, see TL conditional fields
public Flags flags;
/// Access hash
public long access_hash;
/// Unique wallpaper ID
public string slug;
/// The actual wallpaper
public DocumentBase document;
/// Wallpaper settings
[IfFlag(2)] public WallPaperSettings settings;
[Flags] public enum Flags
{
/// Creator of the wallpaper
creator = 0x1,
/// Whether this is the default wallpaper
default_ = 0x2,
/// Field has a value
has_settings = 0x4,
/// Pattern
pattern = 0x8,
/// Dark mode
dark = 0x10,
}
/// Identifier
public override long ID => id;
/// Wallpaper settings
public override WallPaperSettings Settings => settings;
}
/// Wallpaper with no file access hash, used for example when deleting (unsave=true) wallpapers using account.saveWallPaper, specifying just the wallpaper ID.
Also used for some default wallpapers which contain only colours. See
[TLDef(0xE0804116)]
public class WallPaperNoFile : WallPaperBase
{
/// Wallpaper ID
public long id;
/// Flags, see TL conditional fields
public Flags flags;
/// Wallpaper settings
[IfFlag(2)] public WallPaperSettings settings;
[Flags] public enum Flags
{
/// Whether this is the default wallpaper
default_ = 0x2,
/// Field has a value
has_settings = 0x4,
/// Dark mode
dark = 0x10,
}
/// Wallpaper ID
public override long ID => id;
/// Wallpaper settings
public override WallPaperSettings Settings => settings;
}
/// Report reason See
public enum ReportReason : uint
{
///Report for spam
Spam = 0x58DBCAB8,
///Report for violence
Violence = 0x1E22C78D,
///Report for pornography
Pornography = 0x2E59D922,
///Report for child abuse
ChildAbuse = 0xADF44EE3,
///Other
Other = 0xC1E4A2B1,
///Report for copyrighted content
Copyright = 0x9B89F93A,
///Report an irrelevant geogroup
GeoIrrelevant = 0xDBD4FEED,
///Report for impersonation
Fake = 0xF5DDD6E7,
}
/// Extended user info See
[TLDef(0xCF366521)]
public class UserFull : IObject
{
/// Flags, see TL conditional fields
public Flags flags;
public long id;
/// Bio of the user
[IfFlag(1)] public string about;
/// Peer settings
public PeerSettings settings;
/// Profile photo
[IfFlag(2)] public PhotoBase profile_photo;
/// Notification settings
public PeerNotifySettings notify_settings;
/// For bots, info about the bot (bot commands, etc)
[IfFlag(3)] public BotInfo bot_info;
/// Message ID of the last pinned message
[IfFlag(6)] public int pinned_msg_id;
/// Chats in common with this user
public int common_chats_count;
/// Peer folder ID, for more info click here
[IfFlag(11)] public int folder_id;
/// Time To Live of all messages in this chat; once a message is this many seconds old, it must be deleted.
[IfFlag(14)] public int ttl_period;
/// Emoji associated with chat theme
[IfFlag(15)] public string theme_emoticon;
[IfFlag(16)] public string private_forward_name;
[Flags] public enum Flags
{
/// Whether you have blocked this user
blocked = 0x1,
/// Field has a value
has_about = 0x2,
/// Field has a value
has_profile_photo = 0x4,
/// Field has a value
has_bot_info = 0x8,
/// Whether this user can make VoIP calls
phone_calls_available = 0x10,
/// Whether this user's privacy settings allow you to call him
phone_calls_private = 0x20,
/// Field has a value
has_pinned_msg_id = 0x40,
/// Whether you can pin messages in the chat with this user, you can do this only for a chat with yourself
can_pin_message = 0x80,
/// Field has a value
has_folder_id = 0x800,
/// Whether scheduled messages are available
has_scheduled = 0x1000,
/// Whether the user can receive video calls
video_calls_available = 0x2000,
/// Field has a value
has_ttl_period = 0x4000,
/// Field has a value
has_theme_emoticon = 0x8000,
/// Field has a value
has_private_forward_name = 0x10000,
}
}
/// A contact of the current user that is registered in the system. See
[TLDef(0x145ADE0B)]
public class Contact : IObject
{
/// User identifier
public long user_id;
/// Current user is in the user's contact list
public bool mutual;
}
/// Successfully imported contact. See
[TLDef(0xC13E3C50)]
public class ImportedContact : IObject
{
/// User identifier
public long user_id;
/// The contact's client identifier (passed to one of the constructors)
public long client_id;
}
/// Contact status: online / offline. See
[TLDef(0x16D9703B)]
public class ContactStatus : IObject
{
/// User identifier
public long user_id;
/// Online status
public UserStatus status;
}
/// The current user's contact list and info on users. See
/// a null value means contacts.contactsNotModified
[TLDef(0xEAE87E42)]
public class Contacts_Contacts : IObject
{
/// Contact list
public Contact[] contacts;
/// Number of contacts that were saved successfully
public int saved_count;
/// User list
public Dictionary users;
}
/// Info on succesfully imported contacts. See
[TLDef(0x77D01C3B)]
public class Contacts_ImportedContacts : IObject
{
/// List of succesfully imported contacts
public ImportedContact[] imported;
/// Popular contacts
public PopularContact[] popular_invites;
/// List of contact ids that could not be imported due to system limitation and will need to be imported at a later date.
Parameter added in Layer 13
public long[] retry_contacts;
/// List of users
public Dictionary users;
}
/// Full list of blocked users. See
[TLDef(0x0ADE1591)]
public partial class Contacts_Blocked : IObject, IPeerResolver
{
/// List of blocked users
public PeerBlocked[] blocked;
/// Blocked chats
public Dictionary chats;
/// List of users
public Dictionary users;
/// returns a or for the given Peer
public IPeerInfo UserOrChat(Peer peer) => peer.UserOrChat(users, chats);
}
/// Incomplete list of blocked users. See
[TLDef(0xE1664194)]
public class Contacts_BlockedSlice : Contacts_Blocked
{
/// Total number of elements in the list
public int count;
}
/// Object contains a list of chats with messages and auxiliary data. Derived classes: , , See
public abstract partial class Messages_DialogsBase : IObject, IPeerResolver
{
/// List of chats
public abstract DialogBase[] Dialogs { get; }
/// List of last messages from each chat
public abstract MessageBase[] Messages { get; }
/// returns a or for the given Peer
public abstract IPeerInfo UserOrChat(Peer peer);
}
/// Full list of chats with messages and auxiliary data. See
[TLDef(0x15BA6C40)]
public partial class Messages_Dialogs : Messages_DialogsBase, IPeerResolver
{
/// List of chats
public DialogBase[] dialogs;
/// List of last messages from each chat
public MessageBase[] messages;
/// List of groups mentioned in the chats
public Dictionary chats;
/// List of users mentioned in messages and groups
public Dictionary users;
/// List of chats
public override DialogBase[] Dialogs => dialogs;
/// List of last messages from each chat
public override MessageBase[] Messages => messages;
/// returns a or for the given Peer
public override IPeerInfo UserOrChat(Peer peer) => peer.UserOrChat(users, chats);
}
/// Incomplete list of dialogs with messages and auxiliary data. See
[TLDef(0x71E094F3)]
public partial class Messages_DialogsSlice : Messages_Dialogs, IPeerResolver
{
/// Total number of dialogs
public int count;
}
/// Dialogs haven't changed See
[TLDef(0xF0E3E596)]
public partial class Messages_DialogsNotModified : Messages_DialogsBase, IPeerResolver
{
/// Number of dialogs found server-side by the query
public int count;
public override DialogBase[] Dialogs => default;
public override MessageBase[] Messages => default;
/// returns a or for the given Peer
public override IPeerInfo UserOrChat(Peer peer) => null;
}
/// Object contains infor on list of messages with auxiliary data. Derived classes: , , , See
public abstract partial class Messages_MessagesBase : IObject, IPeerResolver
{
/// List of messages
public abstract MessageBase[] Messages { get; }
/// returns a or for the given Peer
public abstract IPeerInfo UserOrChat(Peer peer);
}
/// Full list of messages with auxilary data. See
[TLDef(0x8C718E87)]
public partial class Messages_Messages : Messages_MessagesBase, IPeerResolver
{
/// List of messages
public MessageBase[] messages;
/// List of chats mentioned in dialogs
public Dictionary chats;
/// List of users mentioned in messages and chats
public Dictionary users;
/// List of messages
public override MessageBase[] Messages => messages;
/// returns a or for the given Peer
public override IPeerInfo UserOrChat(Peer peer) => peer.UserOrChat(users, chats);
}
/// Incomplete list of messages and auxiliary data. See
[TLDef(0x3A54685E)]
public partial class Messages_MessagesSlice : Messages_Messages, IPeerResolver
{
/// Flags, see TL conditional fields
public Flags flags;
/// Total number of messages in the list
public int count;
/// Rate to use in the offset_rate parameter in the next call to messages.searchGlobal
[IfFlag(0)] public int next_rate;
/// Indicates the absolute position of messages[0] within the total result set with count count.
This is useful, for example, if the result was fetched using offset_id, and we need to display a progress/total counter (like photo 134 of 200, for all media in a chat, we could simply use photo ${offset_id_offset} of ${count}.
[IfFlag(2)] public int offset_id_offset;
[Flags] public enum Flags
{
/// Field has a value
has_next_rate = 0x1,
/// If set, indicates that the results may be inexact
inexact = 0x2,
/// Field has a value
has_offset_id_offset = 0x4,
}
}
/// Channel messages See
[TLDef(0x64479808)]
public partial class Messages_ChannelMessages : Messages_MessagesBase, IPeerResolver
{
/// Flags, see TL conditional fields
public Flags flags;
/// Event count after generation
public int pts;
/// Total number of results were found server-side (may not be all included here)
public int count;
/// Indicates the absolute position of messages[0] within the total result set with count count.
This is useful, for example, if the result was fetched using offset_id, and we need to display a progress/total counter (like photo 134 of 200, for all media in a chat, we could simply use photo ${offset_id_offset} of ${count}.
[IfFlag(2)] public int offset_id_offset;
/// Found messages
public MessageBase[] messages;
/// Chats
public Dictionary chats;
/// Users
public Dictionary users;
[Flags] public enum Flags
{
/// If set, returned results may be inexact
inexact = 0x2,
/// Field has a value
has_offset_id_offset = 0x4,
}
/// Found messages
public override MessageBase[] Messages => messages;
/// returns a or for the given Peer
public override IPeerInfo UserOrChat(Peer peer) => peer.UserOrChat(users, chats);
}
/// No new messages matching the query were found See
[TLDef(0x74535F21)]
public partial class Messages_MessagesNotModified : Messages_MessagesBase, IPeerResolver
{
/// Number of results found server-side by the given query
public int count;
public override MessageBase[] Messages => default;
/// returns a or for the given Peer
public override IPeerInfo UserOrChat(Peer peer) => null;
}
/// List of chats with auxiliary data. See
[TLDef(0x64FF9FD5)]
public class Messages_Chats : IObject
{
/// List of chats
public Dictionary chats;
}
/// Partial list of chats, more would have to be fetched with pagination See
[TLDef(0x9CD81144)]
public class Messages_ChatsSlice : Messages_Chats
{
/// Total number of results that were found server-side (not all are included in chats)
public int count;
}
/// Extended info on chat and auxiliary data. See
[TLDef(0xE5D7D19C)]
public class Messages_ChatFull : IObject, IPeerResolver
{
/// Extended info on a chat
public ChatFullBase full_chat;
/// List containing basic info on chat
public Dictionary chats;
/// List of users mentioned above
public Dictionary users;
/// returns a or for the given Peer
public IPeerInfo UserOrChat(Peer peer) => peer.UserOrChat(users, chats);
}
/// Affected part of communication history with the user or in a chat. See
[TLDef(0xB45C69D1)]
public class Messages_AffectedHistory : IObject
{
/// Number of events occured in a text box
public int pts;
/// Number of affected events
public int pts_count;
/// If a parameter contains positive value, it is necessary to repeat the method call using the given value; during the proceeding of all the history the value itself shall gradually decrease
public int offset;
}
/// Object describes message filter. Derived classes: , , , , , , , , , , , , , , , See
/// a null value means inputMessagesFilterEmpty
public abstract class MessagesFilter : IObject { }
/// Filter for messages containing photos. See
[TLDef(0x9609A51C)]
public class InputMessagesFilterPhotos : MessagesFilter { }
/// Filter for messages containing videos. See
[TLDef(0x9FC00E65)]
public class InputMessagesFilterVideo : MessagesFilter { }
/// Filter for messages containing photos or videos. See
[TLDef(0x56E9F0E4)]
public class InputMessagesFilterPhotoVideo : MessagesFilter { }
/// Filter for messages containing documents. See
[TLDef(0x9EDDF188)]
public class InputMessagesFilterDocument : MessagesFilter { }
/// Return only messages containing URLs See
[TLDef(0x7EF0DD87)]
public class InputMessagesFilterUrl : MessagesFilter { }
/// Return only messages containing gifs See
[TLDef(0xFFC86587)]
public class InputMessagesFilterGif : MessagesFilter { }
/// Return only messages containing voice notes See
[TLDef(0x50F5C392)]
public class InputMessagesFilterVoice : MessagesFilter { }
/// Return only messages containing audio files See
[TLDef(0x3751B49E)]
public class InputMessagesFilterMusic : MessagesFilter { }
/// Return only chat photo changes See
[TLDef(0x3A20ECB8)]
public class InputMessagesFilterChatPhotos : MessagesFilter { }
/// Return only phone calls See
[TLDef(0x80C99768)]
public class InputMessagesFilterPhoneCalls : MessagesFilter
{
/// Flags, see TL conditional fields
public Flags flags;
[Flags] public enum Flags
{
/// Return only missed phone calls
missed = 0x1,
}
}
/// Return only round videos and voice notes See
[TLDef(0x7A7C17A4)]
public class InputMessagesFilterRoundVoice : MessagesFilter { }
/// Return only round videos See
[TLDef(0xB549DA53)]
public class InputMessagesFilterRoundVideo : MessagesFilter { }
/// Return only messages where the current user was mentioned. See
[TLDef(0xC1F8E69A)]
public class InputMessagesFilterMyMentions : MessagesFilter { }
/// Return only messages containing geolocations See
[TLDef(0xE7026D0D)]
public class InputMessagesFilterGeo : MessagesFilter { }
/// Return only messages containing contacts See
[TLDef(0xE062DB83)]
public class InputMessagesFilterContacts : MessagesFilter { }
/// Fetch only pinned messages See
[TLDef(0x1BB00451)]
public class InputMessagesFilterPinned : MessagesFilter { }
/// Object contains info on events occured. Derived classes: , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , See
public abstract class Update : IObject { }
/// New message in a private chat or in a legacy group. See
[TLDef(0x1F2B0AFD)]
public class UpdateNewMessage : Update
{
/// Message
public MessageBase message;
/// New quantity of actions in a message box
public int pts;
/// Number of generated events
public int pts_count;
}
/// Sent message with random_id client identifier was assigned an identifier. See
[TLDef(0x4E90BFD6)]
public class UpdateMessageID : Update
{
/// id identifier of a respective
public int id;
/// Previuosly transferred client random_id identifier
public long random_id;
}
/// Messages were deleted. See
[TLDef(0xA20DB0E5)]
public class UpdateDeleteMessages : Update
{
/// List of identifiers of deleted messages
public int[] messages;
/// New quality of actions in a message box
public int pts;
/// Number of generated events
public int pts_count;
}
/// The user is preparing a message; typing, recording, uploading, etc. This update is valid for 6 seconds. If no repeated update received after 6 seconds, it should be considered that the user stopped doing whatever he's been doing. See
[TLDef(0xC01E857F)]
public class UpdateUserTyping : Update
{
/// User id
public long user_id;
/// Action type
Param added in Layer 17.
public SendMessageAction action;
}
/// The user is preparing a message in a group; typing, recording, uploading, etc. This update is valid for 6 seconds. If no repeated update received after 6 seconds, it should be considered that the user stopped doing whatever he's been doing. See
[TLDef(0x83487AF0, inheritBefore = true)]
public class UpdateChatUserTyping : UpdateChat
{
/// Peer that started typing (can be the chat itself, in case of anonymous admins).
public Peer from_id;
/// Type of action
Parameter added in Layer 17.
public SendMessageAction action;
}
/// Composition of chat participants changed. See
[TLDef(0x07761198)]
public class UpdateChatParticipants : Update
{
/// Updated chat participants
public ChatParticipantsBase participants;
}
/// Contact status update. See
[TLDef(0xE5BDF8DE)]
public class UpdateUserStatus : Update
{
/// User identifier
public long user_id;
/// New status
public UserStatus status;
}
/// Changes the user's first name, last name and username. See
[TLDef(0xC3F202E0)]
public class UpdateUserName : Update
{
/// User identifier
public long user_id;
/// New first name. Corresponds to the new value of real_first_name field of the constructor.
public string first_name;
/// New last name. Corresponds to the new value of real_last_name field of the constructor.
public string last_name;
/// New username.
Parameter added in Layer 18.
public string username;
}
/// Change of contact's profile photo. See
[TLDef(0xF227868C)]
public class UpdateUserPhoto : Update
{
/// User identifier
public long user_id;
/// Date of photo update.
public DateTime date;
/// New profile photo
public UserProfilePhoto photo;
/// (), if one of the previously used photos is set a profile photo.
public bool previous;
}
/// New encrypted message. See
[TLDef(0x12BCBD9A)]
public class UpdateNewEncryptedMessage : Update
{
/// Message
public EncryptedMessageBase message;
/// New qts value, see updates » for more info.
public int qts;
}
/// Interlocutor is typing a message in an encrypted chat. Update period is 6 second. If upon this time there is no repeated update, it shall be considered that the interlocutor stopped typing. See
[TLDef(0x1710F156)]
public class UpdateEncryptedChatTyping : Update
{
/// Chat ID
public int chat_id;
}
/// Change of state in an encrypted chat. See
[TLDef(0xB4A2E88D)]
public class UpdateEncryption : Update
{
/// Encrypted chat
public EncryptedChatBase chat;
/// Date of change
public DateTime date;
}
/// Communication history in an encrypted chat was marked as read. See
[TLDef(0x38FE25B7)]
public class UpdateEncryptedMessagesRead : Update
{
/// Chat ID
public int chat_id;
/// Maximum value of data for read messages
public DateTime max_date;
/// Time when messages were read
public DateTime date;
}
/// New group member. See
[TLDef(0x3DDA5451, inheritBefore = true)]
public class UpdateChatParticipantAdd : UpdateChat
{
/// ID of the new member
public long user_id;
/// ID of the user, who added member to the group
public long inviter_id;
/// When was the participant added
public DateTime date;
/// Chat version number
public int version;
}
/// A member has left the group. See
[TLDef(0xE32F3D77, inheritBefore = true)]
public class UpdateChatParticipantDelete : UpdateChat
{
/// ID of the user
public long user_id;
/// Used in basic groups to reorder updates and make sure that all of them was received.
public int version;
}
/// Changes in the data center configuration options. See
[TLDef(0x8E5E9873)]
public class UpdateDcOptions : Update
{
/// New connection options
public DcOption[] dc_options;
}
/// Changes in notification settings. See
[TLDef(0xBEC268EF)]
public class UpdateNotifySettings : Update
{
/// Nofication source
public NotifyPeerBase peer;
/// New notification settings
public PeerNotifySettings notify_settings;
}
/// A service message for the user. See
[TLDef(0xEBE46819)]
public class UpdateServiceNotification : Update
{
/// Flags, see TL conditional fields
public Flags flags;
/// When was the notification received
The message must also be stored locally as part of the message history with the user id 777000 (Telegram Notifications).
[IfFlag(1)] public DateTime inbox_date;
/// String, identical in format and contents to the type field in API errors. Describes type of service message. It is acceptable to ignore repeated messages of the same type within a short period of time (15 minutes).
public string type;
/// Message text
public string message;
/// Media content (optional)
public MessageMedia media;
/// Message entities for styled text
public MessageEntity[] entities;
[Flags] public enum Flags
{
/// (boolTrue) if the message must be displayed in a popup.
popup = 0x1,
/// Field has a value
has_inbox_date = 0x2,
}
}
/// Privacy rules were changed See
[TLDef(0xEE3B272A)]
public class UpdatePrivacy : Update
{
/// Peers to which the privacy rules apply
public PrivacyKey key;
/// New privacy rules
public PrivacyRule[] rules;
}
/// A user's phone number was changed See
[TLDef(0x05492A13)]
public class UpdateUserPhone : Update
{
/// User ID
public long user_id;
/// New phone number
public string phone;
}
/// Incoming messages were read See
[TLDef(0x9C974FDF)]
public class UpdateReadHistoryInbox : Update
{
/// Flags, see TL conditional fields
public Flags flags;
/// Peer folder ID, for more info click here
[IfFlag(0)] public int folder_id;
/// Peer
public Peer peer;
/// Maximum ID of messages read
public int max_id;
/// Number of messages that are still unread
public int still_unread_count;
/// Event count after generation
public int pts;
/// Number of events that were generated
public int pts_count;
[Flags] public enum Flags
{
/// Field has a value
has_folder_id = 0x1,
}
}
/// Outgoing messages were read See
[TLDef(0x2F2F21BF)]
public class UpdateReadHistoryOutbox : Update
{
/// Peer
public Peer peer;
/// Maximum ID of read outgoing messages
public int max_id;
/// Event count after generation
public int pts;
/// Number of events that were generated
public int pts_count;
}
/// An instant view webpage preview was generated See
[TLDef(0x7F891213)]
public class UpdateWebPage : Update
{
/// Webpage preview
public WebPageBase webpage;
/// Event count after generation
public int pts;
/// Number of events that were generated
public int pts_count;
}
/// Contents of messages in the common message box were read See
[TLDef(0x68C13933)]
public class UpdateReadMessagesContents : Update
{
/// IDs of read messages
public int[] messages;
/// Event count after generation
public int pts;
/// Number of events that were generated
public int pts_count;
}
/// There are new updates in the specified channel, the client must fetch them.
If the difference is too long or if the channel isn't currently in the states, start fetching from the specified pts. See
[TLDef(0x108D941F)]
public class UpdateChannelTooLong : Update
{
/// Flags, see TL conditional fields
public Flags flags;
/// The channel
public long channel_id;
/// The PTS.
[IfFlag(0)] public int pts;
[Flags] public enum Flags
{
/// Field has a value
has_pts = 0x1,
}
}
/// A new channel is available See
[TLDef(0x635B4C09)]
public class UpdateChannel : Update
{
/// Channel ID
public long channel_id;
}
/// A new message was sent in a channel/supergroup See
[TLDef(0x62BA04D9)]
public class UpdateNewChannelMessage : UpdateNewMessage { }
/// Incoming messages in a channel/supergroup were read See
[TLDef(0x922E6E10)]
public class UpdateReadChannelInbox : Update
{
/// Flags, see TL conditional fields
public Flags flags;
/// Peer folder ID, for more info click here
[IfFlag(0)] public int folder_id;
/// Channel/supergroup ID
public long channel_id;
/// Position up to which all incoming messages are read.
public int max_id;
/// Count of messages weren't read yet
public int still_unread_count;
/// Event count after generation
public int pts;
[Flags] public enum Flags
{
/// Field has a value
has_folder_id = 0x1,
}
}
/// Some messages in a supergroup/channel were deleted See
[TLDef(0xC32D5B12)]
public class UpdateDeleteChannelMessages : UpdateDeleteMessages
{
/// Channel ID
public long channel_id;
}
/// The view counter of a message in a channel has changed See
[TLDef(0xF226AC08, inheritBefore = true)]
public class UpdateChannelMessageViews : UpdateChannel
{
/// ID of the message
public int id;
/// New view counter
public int views;
}
/// Admin permissions of a user in a legacy group were changed See
[TLDef(0xD7CA61A2, inheritBefore = true)]
public class UpdateChatParticipantAdmin : UpdateChat
{
/// ID of the (de)admined user
public long user_id;
/// Whether the user was rendered admin
public bool is_admin;
/// Used in basic groups to reorder updates and make sure that all of them was received.
public int version;
}
/// A new stickerset was installed See
[TLDef(0x688A30AA)]
public class UpdateNewStickerSet : Update
{
/// The installed stickerset
public Messages_StickerSet stickerset;
}
/// The order of stickersets was changed See
[TLDef(0x0BB2D201)]
public class UpdateStickerSetsOrder : Update
{
/// Flags, see TL conditional fields
public Flags flags;
/// New sticker order by sticker ID
public long[] order;
[Flags] public enum Flags
{
/// Whether the updated stickers are mask stickers
masks = 0x1,
}
}
/// Installed stickersets have changed, the client should refetch them using messages.getAllStickers See
[TLDef(0x43AE3DEC)]
public class UpdateStickerSets : Update { }
/// The saved gif list has changed, the client should refetch it using messages.getSavedGifs See
[TLDef(0x9375341E)]
public class UpdateSavedGifs : Update { }
/// An incoming inline query See
[TLDef(0x496F379C)]
public class UpdateBotInlineQuery : Update
{
/// Flags, see TL conditional fields
public Flags flags;
/// Query ID
public long query_id;
/// User that sent the query
public long user_id;
/// Text of query
public string query;
/// Attached geolocation
[IfFlag(0)] public GeoPoint geo;
/// Type of the chat from which the inline query was sent.
[IfFlag(1)] public InlineQueryPeerType peer_type;
/// Offset to navigate through results
public string offset;
[Flags] public enum Flags
{
/// Field has a value
has_geo = 0x1,
/// Field has a value
has_peer_type = 0x2,
}
}
/// The result of an inline query that was chosen by a user and sent to their chat partner. Please see our documentation on the feedback collecting for details on how to enable these updates for your bot. See
[TLDef(0x12F12A07)]
public class UpdateBotInlineSend : Update
{
/// Flags, see TL conditional fields
public Flags flags;
/// The user that chose the result
public long user_id;
/// The query that was used to obtain the result
public string query;
/// Optional. Sender location, only for bots that require user location
[IfFlag(0)] public GeoPoint geo;
/// The unique identifier for the result that was chosen
public string id;
/// Identifier of the sent inline message. Available only if there is an inline keyboard attached to the message. Will be also received in callback queries and can be used to edit the message.
[IfFlag(1)] public InputBotInlineMessageIDBase msg_id;
[Flags] public enum Flags
{
/// Field has a value
has_geo = 0x1,
/// Field has a value
has_msg_id = 0x2,
}
}
/// A message was edited in a channel/supergroup See
[TLDef(0x1B3F4DF7)]
public class UpdateEditChannelMessage : UpdateEditMessage { }
/// A callback button was pressed, and the button data was sent to the bot that created the button See
[TLDef(0xB9CFC48D)]
public class UpdateBotCallbackQuery : Update
{
/// Flags, see TL conditional fields
public Flags flags;
/// Query ID
public long query_id;
/// ID of the user that pressed the button
public long user_id;
/// Chat where the inline keyboard was sent
public Peer peer;
/// Message ID
public int msg_id;
/// Global identifier, uniquely corresponding to the chat to which the message with the callback button was sent. Useful for high scores in games.
public long chat_instance;
/// Callback data
[IfFlag(0)] public byte[] data;
/// Short name of a Game to be returned, serves as the unique identifier for the game
[IfFlag(1)] public string game_short_name;
[Flags] public enum Flags
{
/// Field has a value
has_data = 0x1,
/// Field has a value
has_game_short_name = 0x2,
}
}
/// A message was edited See
[TLDef(0xE40370A3)]
public class UpdateEditMessage : Update
{
/// The new edited message
public MessageBase message;
/// PTS
public int pts;
/// PTS count
public int pts_count;
}
/// This notification is received by bots when a button is pressed See
[TLDef(0x691E9052)]
public class UpdateInlineBotCallbackQuery : Update
{
/// Flags, see TL conditional fields
public Flags flags;
/// Query ID
public long query_id;
/// ID of the user that pressed the button
public long user_id;
/// ID of the inline message with the button
public InputBotInlineMessageIDBase msg_id;
/// Global identifier, uniquely corresponding to the chat to which the message with the callback button was sent. Useful for high scores in games.
public long chat_instance;
/// Data associated with the callback button. Be aware that a bad client can send arbitrary data in this field.
[IfFlag(0)] public byte[] data;
/// Short name of a Game to be returned, serves as the unique identifier for the game
[IfFlag(1)] public string game_short_name;
[Flags] public enum Flags
{
/// Field has a value
has_data = 0x1,
/// Field has a value
has_game_short_name = 0x2,
}
}
/// Outgoing messages in a channel/supergroup were read See
[TLDef(0xB75F99A9)]
public class UpdateReadChannelOutbox : Update
{
/// Channel/supergroup ID
public long channel_id;
/// Position up to which all outgoing messages are read.
public int max_id;
}
/// Notifies a change of a message draft. See
[TLDef(0xEE2BB969)]
public class UpdateDraftMessage : Update
{
/// The peer to which the draft is associated
public Peer peer;
/// The draft
public DraftMessageBase draft;
}
/// Some featured stickers were marked as read See
[TLDef(0x571D2742)]
public class UpdateReadFeaturedStickers : Update { }
/// The recent sticker list was updated See
[TLDef(0x9A422C20)]
public class UpdateRecentStickers : Update { }
/// The server-side configuration has changed; the client should re-fetch the config using help.getConfig See
[TLDef(0xA229DD06)]
public class UpdateConfig : Update { }
/// Common message box sequence PTS has changed, state has to be refetched using updates.getState See
[TLDef(0x3354678F)]
public class UpdatePtsChanged : Update { }
/// A webpage preview of a link in a channel/supergroup message was generated See
[TLDef(0x2F2BA99F)]
public class UpdateChannelWebPage : UpdateWebPage
{
/// Channel/supergroup ID
public long channel_id;
}
/// A dialog was pinned/unpinned See
[TLDef(0x6E6FE51C)]
public class UpdateDialogPinned : Update
{
/// Flags, see TL conditional fields
public Flags flags;
/// Peer folder ID, for more info click here
[IfFlag(1)] public int folder_id;
/// The dialog
public DialogPeerBase peer;
[Flags] public enum Flags
{
/// Whether the dialog was pinned
pinned = 0x1,
/// Field has a value
has_folder_id = 0x2,
}
}
/// Pinned dialogs were updated See
[TLDef(0xFA0F3CA2)]
public class UpdatePinnedDialogs : Update
{
/// Flags, see TL conditional fields
public Flags flags;
/// Peer folder ID, for more info click here
[IfFlag(1)] public int folder_id;
/// New order of pinned dialogs
[IfFlag(0)] public DialogPeerBase[] order;
[Flags] public enum Flags
{
/// Field has a value
has_order = 0x1,
/// Field has a value
has_folder_id = 0x2,
}
}
/// A new incoming event; for bots only See
[TLDef(0x8317C0C3)]
public class UpdateBotWebhookJSON : Update
{
/// The event
public DataJSON data;
}
/// A new incoming query; for bots only See
[TLDef(0x9B9240A6)]
public class UpdateBotWebhookJSONQuery : Update
{
/// Query identifier
public long query_id;
/// Query data
public DataJSON data;
/// Query timeout
public int timeout;
}
/// This object contains information about an incoming shipping query. See
[TLDef(0xB5AEFD7D)]
public class UpdateBotShippingQuery : Update
{
/// Unique query identifier
public long query_id;
/// User who sent the query
public long user_id;
/// Bot specified invoice payload
public byte[] payload;
/// User specified shipping address
public PostAddress shipping_address;
}
/// This object contains information about an incoming pre-checkout query. See
[TLDef(0x8CAA9A96)]
public class UpdateBotPrecheckoutQuery : Update
{
/// Flags, see TL conditional fields
public Flags flags;
/// Unique query identifier
public long query_id;
/// User who sent the query
public long user_id;
/// Bot specified invoice payload
public byte[] payload;
/// Order info provided by the user
[IfFlag(0)] public PaymentRequestedInfo info;
/// Identifier of the shipping option chosen by the user
[IfFlag(1)] public string shipping_option_id;
/// Three-letter ISO 4217 currency code
public string currency;
/// Total amount in the smallest units of the currency (integer, not float/double). For example, for a price of US$ 1.45 pass amount = 145. See the exp parameter in currencies.json, it shows the number of digits past the decimal point for each currency (2 for the majority of currencies).
public long total_amount;
[Flags] public enum Flags
{
/// Field has a value
has_info = 0x1,
/// Field has a value
has_shipping_option_id = 0x2,
}
}
/// An incoming phone call See
[TLDef(0xAB0F6B1E)]
public class UpdatePhoneCall : Update
{
/// Phone call
public PhoneCallBase phone_call;
}
/// A language pack has changed, the client should manually fetch the changed strings using langpack.getDifference See
[TLDef(0x46560264)]
public class UpdateLangPackTooLong : Update
{
/// Language code
public string lang_code;
}
/// Language pack updated See
[TLDef(0x56022F4D)]
public class UpdateLangPack : Update
{
/// Changed strings
public LangPackDifference difference;
}
/// The list of favorited stickers was changed, the client should call messages.getFavedStickers to refetch the new list See
[TLDef(0xE511996D)]
public class UpdateFavedStickers : Update { }
/// The specified channel/supergroup messages were read See
[TLDef(0x44BDD535, inheritBefore = true)]
public class UpdateChannelReadMessagesContents : UpdateChannel
{
/// IDs of messages that were read
public int[] messages;
}
/// All contacts were deleted See
[TLDef(0x7084A7BE)]
public class UpdateContactsReset : Update { }
/// The history of a channel/supergroup was hidden. See
[TLDef(0xB23FC698, inheritBefore = true)]
public class UpdateChannelAvailableMessages : UpdateChannel
{
/// Identifier of a maximum unavailable message in a channel due to hidden history.
public int available_min_id;
}
/// The manual unread mark of a chat was changed See
[TLDef(0xE16459C3)]
public class UpdateDialogUnreadMark : Update
{
/// Flags, see TL conditional fields
public Flags flags;
/// The dialog
public DialogPeerBase peer;
[Flags] public enum Flags
{
/// Was the chat marked or unmarked as read
unread = 0x1,
}
}
/// The results of a poll have changed See
[TLDef(0xACA1657B)]
public class UpdateMessagePoll : Update
{
/// Flags, see TL conditional fields
public Flags flags;
/// Poll ID
public long poll_id;
/// If the server knows the client hasn't cached this poll yet, the poll itself
[IfFlag(0)] public Poll poll;
/// New poll results
public PollResults results;
[Flags] public enum Flags
{
/// Field has a value
has_poll = 0x1,
}
}
/// Default banned rights in a normal chat were updated See
[TLDef(0x54C01850)]
public class UpdateChatDefaultBannedRights : Update
{
/// The chat
public Peer peer;
/// New default banned rights
public ChatBannedRights default_banned_rights;
/// Version
public int version;
}
/// The peer list of a peer folder was updated See
[TLDef(0x19360DC0)]
public class UpdateFolderPeers : Update
{
/// New peer list
public FolderPeer[] folder_peers;
/// Event count after generation
public int pts;
/// Number of events that were generated
public int pts_count;
}
/// Settings of a certain peer have changed See
[TLDef(0x6A7E7366)]
public class UpdatePeerSettings : Update
{
/// The peer
public Peer peer;
/// Associated peer settings
public PeerSettings settings;
}
/// List of peers near you was updated See
[TLDef(0xB4AFCFB0)]
public class UpdatePeerLocated : Update
{
/// Geolocated peer list update
public PeerLocatedBase[] peers;
}
/// A message was added to the schedule queue of a chat See
[TLDef(0x39A51DFB)]
public class UpdateNewScheduledMessage : Update
{
/// Message
public MessageBase message;
}
/// Some scheduled messages were deleted from the schedule queue of a chat See
[TLDef(0x90866CEE)]
public class UpdateDeleteScheduledMessages : Update
{
/// Peer
public Peer peer;
/// Deleted scheduled messages
public int[] messages;
}
/// A cloud theme was updated See
[TLDef(0x8216FBA3)]
public class UpdateTheme : Update
{
/// Theme
public Theme theme;
}
/// Live geoposition message was viewed See
[TLDef(0x871FB939)]
public class UpdateGeoLiveViewed : Update
{
/// The user that viewed the live geoposition
public Peer peer;
/// Message ID of geoposition message
public int msg_id;
}
/// A login token (for login via QR code) was accepted. See
[TLDef(0x564FE691)]
public class UpdateLoginToken : Update { }
/// A specific user has voted in a poll See
[TLDef(0x106395C9)]
public class UpdateMessagePollVote : Update
{
/// Poll ID
public long poll_id;
/// User ID
public long user_id;
/// Chosen option(s)
public byte[][] options;
/// New qts value, see updates » for more info.
public int qts;
}
/// A new folder was added See
[TLDef(0x26FFDE7D)]
public class UpdateDialogFilter : Update
{
/// Flags, see TL conditional fields
public Flags flags;
/// Folder ID
public int id;
/// Folder info
[IfFlag(0)] public DialogFilter filter;
[Flags] public enum Flags
{
/// Field has a value
has_filter = 0x1,
}
}
/// New folder order See
[TLDef(0xA5D72105)]
public class UpdateDialogFilterOrder : Update
{
/// Ordered folder IDs
public int[] order;
}
/// Clients should update folder info See
[TLDef(0x3504914F)]
public class UpdateDialogFilters : Update { }
/// Incoming phone call signaling payload See
[TLDef(0x2661BF09)]
public class UpdatePhoneCallSignalingData : Update
{
/// Phone call ID
public long phone_call_id;
/// Signaling payload
public byte[] data;
}
/// The forward counter of a message in a channel has changed See
[TLDef(0xD29A27F4, inheritBefore = true)]
public class UpdateChannelMessageForwards : UpdateChannel
{
/// ID of the message
public int id;
/// New forward counter
public int forwards;
}
/// Incoming comments in a discussion thread were marked as read See
[TLDef(0xD6B19546)]
public class UpdateReadChannelDiscussionInbox : Update
{
/// Flags, see TL conditional fields
public Flags flags;
/// Discussion group ID
public long channel_id;
/// ID of the group message that started the thread (message in linked discussion group)
public int top_msg_id;
/// Message ID of latest read incoming message for this thread
public int read_max_id;
/// If set, contains the ID of the channel that contains the post that started the comment thread in the discussion group (channel_id)
[IfFlag(0)] public long broadcast_id;
/// If set, contains the ID of the channel post that started the the comment thread
[IfFlag(0)] public int broadcast_post;
[Flags] public enum Flags
{
/// Field has a value
has_broadcast_id = 0x1,
}
}
/// Outgoing comments in a discussion thread were marked as read See
[TLDef(0x695C9E7C)]
public class UpdateReadChannelDiscussionOutbox : Update
{
/// Supergroup ID
public long channel_id;
/// ID of the group message that started the thread
public int top_msg_id;
/// Message ID of latest read outgoing message for this thread
public int read_max_id;
}
/// A peer was blocked See
[TLDef(0x246A4B22)]
public class UpdatePeerBlocked : Update
{
/// The blocked peer
public Peer peer_id;
/// Whether the peer was blocked or unblocked
public bool blocked;
}
/// A user is typing in a supergroup, channel or message thread See
[TLDef(0x8C88C923)]
public class UpdateChannelUserTyping : Update
{
/// Flags, see TL conditional fields
public Flags flags;
/// Channel ID
public long channel_id;
/// Thread ID
[IfFlag(0)] public int top_msg_id;
/// The peer that is typing
public Peer from_id;
/// Whether the user is typing, sending a media or doing something else
public SendMessageAction action;
[Flags] public enum Flags
{
/// Field has a value
has_top_msg_id = 0x1,
}
}
/// Some messages were pinned in a chat See
[TLDef(0xED85EAB5)]
public class UpdatePinnedMessages : Update
{
/// Flags, see TL conditional fields
public Flags flags;
/// Peer
public Peer peer;
/// Message IDs
public int[] messages;
/// Event count after generation
public int pts;
/// Number of events that were generated
public int pts_count;
[Flags] public enum Flags
{
/// Whether the messages were pinned or unpinned
pinned = 0x1,
}
}
/// Messages were pinned/unpinned in a channel/supergroup See
[TLDef(0x5BB98608)]
public class UpdatePinnedChannelMessages : Update
{
/// Flags, see TL conditional fields
public Flags flags;
/// Channel ID
public long channel_id;
/// Messages
public int[] messages;
/// Event count after generation
public int pts;
/// Number of events that were generated
public int pts_count;
[Flags] public enum Flags
{
/// Whether the messages were pinned or unpinned
pinned = 0x1,
}
}
/// A new chat is available See
[TLDef(0xF89A6A4E)]
public class UpdateChat : Update
{
/// Chat ID
public long chat_id;
}
/// The participant list of a certain group call has changed See
[TLDef(0xF2EBDB4E)]
public class UpdateGroupCallParticipants : Update
{
/// Group call
public InputGroupCall call;
/// New participant list
public GroupCallParticipant[] participants;
/// Version
public int version;
}
/// A new groupcall was started See
[TLDef(0x14B24500)]
public class UpdateGroupCall : Update
{
/// The channel/supergroup where this group call or livestream takes place
public long chat_id;
/// Info about the group call or livestream
public GroupCallBase call;
}
/// The Time-To-Live for messages sent by the current user in a specific chat has changed See
[TLDef(0xBB9BB9A5)]
public class UpdatePeerHistoryTTL : Update
{
/// Flags, see TL conditional fields
public Flags flags;
/// The chat
public Peer peer;
/// The new Time-To-Live
[IfFlag(0)] public int ttl_period;
[Flags] public enum Flags
{
/// Field has a value
has_ttl_period = 0x1,
}
}
/// A user has joined or left a specific chat See
[TLDef(0xD087663A)]
public class UpdateChatParticipant : Update
{
/// Flags, see TL conditional fields
public Flags flags;
/// Chat ID
public long chat_id;
/// When did this event occur
public DateTime date;
/// User that triggered the change (inviter, admin that kicked the user, or the even the user_id itself)
public long actor_id;
/// User that was affected by the change
public long user_id;
/// Previous participant info (empty if this participant just joined)
[IfFlag(0)] public ChatParticipantBase prev_participant;
/// New participant info (empty if this participant just left)
[IfFlag(1)] public ChatParticipantBase new_participant;
/// The invite that was used to join the group
[IfFlag(2)] public ExportedChatInvite invite;
/// New qts value, see updates » for more info.
public int qts;
[Flags] public enum Flags
{
/// Field has a value
has_prev_participant = 0x1,
/// Field has a value
has_new_participant = 0x2,
/// Field has a value
has_invite = 0x4,
}
}
/// A participant has left, joined, was banned or admined in a channel or supergroup. See
[TLDef(0x985D3ABB)]
public class UpdateChannelParticipant : Update
{
/// Flags, see TL conditional fields
public Flags flags;
/// Channel ID
public long channel_id;
/// Date of the event
public DateTime date;
/// User that triggered the change (inviter, admin that kicked the user, or the even the user_id itself)
public long actor_id;
/// User that was affected by the change
public long user_id;
/// Previous participant status
[IfFlag(0)] public ChannelParticipantBase prev_participant;
/// New participant status
[IfFlag(1)] public ChannelParticipantBase new_participant;
/// Chat invite used to join the channel/supergroup
[IfFlag(2)] public ExportedChatInvite invite;
/// New qts value, see updates » for more info.
public int qts;
[Flags] public enum Flags
{
/// Field has a value
has_prev_participant = 0x1,
/// Field has a value
has_new_participant = 0x2,
/// Field has a value
has_invite = 0x4,
}
}
/// A bot was stopped or re-started. See
[TLDef(0xC4870A49)]
public class UpdateBotStopped : Update
{
/// The bot ID
public long user_id;
/// When did this action occur
public DateTime date;
/// Whether the bot was stopped or started
public bool stopped;
/// New qts value, see updates » for more info.
public int qts;
}
/// New WebRTC parameters See
[TLDef(0x0B783982)]
public class UpdateGroupCallConnection : Update
{
/// Flags, see TL conditional fields
public Flags flags;
/// WebRTC parameters
public DataJSON params_;
[Flags] public enum Flags
{
/// Are these parameters related to the screen capture session currently in progress?
presentation = 0x1,
}
}
/// The command set of a certain bot in a certain chat has changed. See
[TLDef(0x4D712F2E)]
public class UpdateBotCommands : Update
{
/// The affected chat
public Peer peer;
/// ID of the bot that changed its command set
public long bot_id;
/// New bot commands
public BotCommand[] commands;
}
/// See
[TLDef(0x7063C3DB)]
public class UpdatePendingJoinRequests : Update
{
public Peer peer;
public int requests_pending;
public long[] recent_requesters;
}
/// See
[TLDef(0x11DFA986)]
public class UpdateBotChatInviteRequester : Update
{
public Peer peer;
public DateTime date;
public long user_id;
public string about;
public ExportedChatInvite invite;
public int qts;
}
/// See
[TLDef(0x154798C3)]
public class UpdateMessageReactions : Update
{
public Peer peer;
public int msg_id;
public MessageReactions reactions;
}
/// Updates state. See
[TLDef(0xA56C2A3E)]
public class Updates_State : IObject
{
/// Number of events occured in a text box
public int pts;
/// Position in a sequence of updates in secret chats. For further detailes refer to article secret chats
Parameter was added in eigth layer.
public int qts;
/// Date of condition
public DateTime date;
/// Number of sent updates
public int seq;
/// Number of unread messages
public int unread_count;
}
/// Occurred changes. Derived classes: , , , See
public abstract partial class Updates_DifferenceBase : IObject, IPeerResolver
{
/// List of new messages
public abstract MessageBase[] NewMessages { get; }
/// List of new encrypted secret chat messages
public abstract EncryptedMessageBase[] NewEncryptedMessages { get; }
/// List of updates
public abstract Update[] OtherUpdates { get; }
/// returns a or for the given Peer
public abstract IPeerInfo UserOrChat(Peer peer);
}
/// No events. See
[TLDef(0x5D75A138)]
public partial class Updates_DifferenceEmpty : Updates_DifferenceBase, IPeerResolver
{
/// Current date
public DateTime date;
/// Number of sent updates
public int seq;
public override MessageBase[] NewMessages => Array.Empty();
public override EncryptedMessageBase[] NewEncryptedMessages => Array.Empty();
public override Update[] OtherUpdates => Array.Empty();
/// returns a or for the given Peer
public override IPeerInfo UserOrChat(Peer peer) => null;
}
/// Full list of occurred events. See
[TLDef(0x00F49CA0)]
public partial class Updates_Difference : Updates_DifferenceBase, IPeerResolver
{
/// List of new messages
public MessageBase[] new_messages;
/// List of new encrypted secret chat messages
public EncryptedMessageBase[] new_encrypted_messages;
/// List of updates
public Update[] other_updates;
/// List of chats mentioned in events
public Dictionary chats;
/// List of users mentioned in events
public Dictionary users;
/// Current state
public Updates_State state;
/// List of new messages
public override MessageBase[] NewMessages => new_messages;
/// List of new encrypted secret chat messages
public override EncryptedMessageBase[] NewEncryptedMessages => new_encrypted_messages;
/// List of updates
public override Update[] OtherUpdates => other_updates;
/// returns a or for the given Peer
public override IPeerInfo UserOrChat(Peer peer) => peer.UserOrChat(users, chats);
}
/// Incomplete list of occurred events. See
[TLDef(0xA8FB1981)]
public partial class Updates_DifferenceSlice : Updates_DifferenceBase, IPeerResolver
{
/// List of new messgaes
public MessageBase[] new_messages;
/// New messages from the encrypted event sequence
public EncryptedMessageBase[] new_encrypted_messages;
/// List of updates
public Update[] other_updates;
/// List of chats mentioned in events
public Dictionary chats;
/// List of users mentioned in events
public Dictionary users;
/// Intermediary state
public Updates_State intermediate_state;
/// List of new messgaes
public override MessageBase[] NewMessages => new_messages;
/// New messages from the encrypted event sequence
public override EncryptedMessageBase[] NewEncryptedMessages => new_encrypted_messages;
/// List of updates
public override Update[] OtherUpdates => other_updates;
/// returns a or for the given Peer
public override IPeerInfo UserOrChat(Peer peer) => peer.UserOrChat(users, chats);
}
/// The difference is too long, and the specified state must be used to refetch updates. See
[TLDef(0x4AFE8F6D)]
public partial class Updates_DifferenceTooLong : Updates_DifferenceBase, IPeerResolver
{
/// The new state to use.
public int pts;
public override MessageBase[] NewMessages => default;
public override EncryptedMessageBase[] NewEncryptedMessages => default;
public override Update[] OtherUpdates => default;
/// returns a or for the given Peer
public override IPeerInfo UserOrChat(Peer peer) => null;
}
/// Object which is perceived by the client without a call on its part when an event occurs. Derived classes: , , , , , , See
public abstract partial class UpdatesBase : IObject
{
/// date
public abstract DateTime Date { get; }
}
/// Too many updates, it is necessary to execute updates.getDifference. See
[TLDef(0xE317AF7E)]
public partial class UpdatesTooLong : UpdatesBase
{
public override DateTime Date => default;
}
/// Info about a message sent to (received from) another user See
[TLDef(0x313BC7F8)]
public partial class UpdateShortMessage : UpdatesBase
{
/// Flags, see TL conditional fields
public Flags flags;
/// The message ID
public int id;
/// The ID of the sender (if outgoing will be the ID of the destination) of the message
public long user_id;
/// The message
public string message;
/// PTS
public int pts;
/// PTS count
public int pts_count;
/// date
public DateTime date;
/// Info about a forwarded message
[IfFlag(2)] public MessageFwdHeader fwd_from;
/// Info about the inline bot used to generate this message
[IfFlag(11)] public long via_bot_id;
/// Reply and thread information
[IfFlag(3)] public MessageReplyHeader reply_to;
/// Entities for styled text
[IfFlag(7)] public MessageEntity[] entities;
/// Time To Live of the message, once message.date+message.ttl_period === time(), the message will be deleted on the server, and must be deleted locally as well.
[IfFlag(25)] public int ttl_period;
[Flags] public enum Flags
{
/// Whether the message is outgoing
out_ = 0x2,
/// Field has a value
has_fwd_from = 0x4,
/// Field has a value
has_reply_to = 0x8,
/// Whether we were mentioned in the message
mentioned = 0x10,
/// Whether there are some unread mentions in this message
media_unread = 0x20,
/// Field has a value
has_entities = 0x80,
/// Field has a value
has_via_bot_id = 0x800,
/// If true, the message is a silent message, no notifications should be triggered
silent = 0x2000,
/// Field has a value
has_ttl_period = 0x2000000,
}
/// date
public override DateTime Date => date;
}
/// Shortened constructor containing info on one new incoming text message from a chat See
[TLDef(0x4D6DEEA5)]
public partial class UpdateShortChatMessage : UpdatesBase
{
/// Flags, see TL conditional fields
public Flags flags;
/// ID of the message
public int id;
/// ID of the sender of the message
public long from_id;
/// ID of the chat where the message was sent
public long chat_id;
/// Message
public string message;
/// PTS
public int pts;
/// PTS count
public int pts_count;
/// date
public DateTime date;
/// Info about a forwarded message
[IfFlag(2)] public MessageFwdHeader fwd_from;
/// Info about the inline bot used to generate this message
[IfFlag(11)] public long via_bot_id;
/// Reply (thread) information
[IfFlag(3)] public MessageReplyHeader reply_to;
/// Entities for styled text
[IfFlag(7)] public MessageEntity[] entities;
/// Time To Live of the message, once updateShortChatMessage.date+updateShortChatMessage.ttl_period === time(), the message will be deleted on the server, and must be deleted locally as well.
[IfFlag(25)] public int ttl_period;
[Flags] public enum Flags
{
/// Whether the message is outgoing
out_ = 0x2,
/// Field has a value
has_fwd_from = 0x4,
/// Field has a value
has_reply_to = 0x8,
/// Whether we were mentioned in this message
mentioned = 0x10,
/// Whether the message contains some unread mentions
media_unread = 0x20,
/// Field has a value
has_entities = 0x80,
/// Field has a value
has_via_bot_id = 0x800,
/// If true, the message is a silent message, no notifications should be triggered
silent = 0x2000,
/// Field has a value
has_ttl_period = 0x2000000,
}
/// date
public override DateTime Date => date;
}
/// Shortened constructor containing info on one update not requiring auxiliary data See
[TLDef(0x78D4DEC1)]
public partial class UpdateShort : UpdatesBase
{
/// Update
public Update update;
/// Date of event
public DateTime date;
/// Date of event
public override DateTime Date => date;
}
/// Constructor for a group of updates. See
[TLDef(0x725B04C3)]
public partial class UpdatesCombined : UpdatesBase, IPeerResolver
{
/// List of updates
public Update[] updates;
/// List of users mentioned in updates
public Dictionary users;
/// List of chats mentioned in updates
public Dictionary chats;
/// Current date
public DateTime date;
/// Value seq for the earliest update in a group
public int seq_start;
/// Value seq for the latest update in a group
public int seq;
/// Current date
public override DateTime Date => date;
/// returns a or for the given Peer
public IPeerInfo UserOrChat(Peer peer) => peer.UserOrChat(users, chats);
}
/// Full constructor of updates See
[TLDef(0x74AE4240)]
public partial class Updates : UpdatesBase, IPeerResolver
{
/// List of updates
public Update[] updates;
/// List of users mentioned in updates
public Dictionary users;
/// List of chats mentioned in updates
public Dictionary chats;
/// Current date
public DateTime date;
/// Total number of sent updates
public int seq;
/// Current date
public override DateTime Date => date;
/// returns a or for the given Peer
public IPeerInfo UserOrChat(Peer peer) => peer.UserOrChat(users, chats);
}
/// Shortened constructor containing info on one outgoing message to a contact (the destination chat has to be extracted from the method call that returned this object). See
[TLDef(0x9015E101)]
public partial class UpdateShortSentMessage : UpdatesBase
{
/// Flags, see TL conditional fields
public Flags flags;
/// ID of the sent message
public int id;
/// PTS
public int pts;
/// PTS count
public int pts_count;
/// date
public DateTime date;
/// Attached media
[IfFlag(9)] public MessageMedia media;
/// Entities for styled text
[IfFlag(7)] public MessageEntity[] entities;
/// Time To Live of the message, once message.date+message.ttl_period === time(), the message will be deleted on the server, and must be deleted locally as well.
[IfFlag(25)] public int ttl_period;
[Flags] public enum Flags
{
/// Whether the message is outgoing
out_ = 0x2,
/// Field has a value
has_entities = 0x80,
/// Field has a value
has_media = 0x200,
/// Field has a value
has_ttl_period = 0x2000000,
}
/// date
public override DateTime Date => date;
}
/// Full list of photos with auxiliary data. See
[TLDef(0x8DCA6AA5)]
public class Photos_Photos : IObject
{
/// List of photos
public PhotoBase[] photos;
/// List of mentioned users
public Dictionary users;
}
/// Incomplete list of photos with auxiliary data. See
[TLDef(0x15051F54)]
public class Photos_PhotosSlice : Photos_Photos
{
/// Total number of photos
public int count;
}
/// Photo with auxiliary data. See
[TLDef(0x20212CA8)]
public class Photos_Photo : IObject
{
/// Photo
public PhotoBase photo;
/// Users
public Dictionary users;
}
/// Contains info on file. Derived classes: , See
public abstract class Upload_FileBase : IObject { }
/// File content. See
[TLDef(0x096A18D5)]
public class Upload_File : Upload_FileBase
{
/// File type
public Storage_FileType type;
/// Modification type
public int mtime;
/// Binary data, file content
public byte[] bytes;
}
/// The file must be downloaded from a CDN DC. See
[TLDef(0xF18CDA44)]
public class Upload_FileCdnRedirect : Upload_FileBase
{
/// CDN DC ID
public int dc_id;
/// File token (see CDN files)
public byte[] file_token;
/// Encryption key (see CDN files)
public byte[] encryption_key;
/// Encryption IV (see CDN files)
public byte[] encryption_iv;
/// File hashes (see CDN files)
public FileHash[] file_hashes;
}
/// Data centre See
[TLDef(0x18B7A10D)]
public class DcOption : IObject
{
/// Flags, see TL conditional fields
public Flags flags;
/// DC ID
public int id;
/// IP address of DC
public string ip_address;
/// Port
public int port;
/// If the tcpo_only flag is set, specifies the secret to use when connecting using transport obfuscation
[IfFlag(10)] public byte[] secret;
[Flags] public enum Flags
{
/// Whether the specified IP is an IPv6 address
ipv6 = 0x1,
/// Whether this DC should only be used to download or upload files
media_only = 0x2,
/// Whether this DC only supports connection with transport obfuscation
tcpo_only = 0x4,
/// Whether this is a CDN DC.
cdn = 0x8,
/// If set, this IP should be used when connecting through a proxy
static_ = 0x10,
/// Field has a value
has_secret = 0x400,
}
}
/// Current configuration See
[TLDef(0x330B4067)]
public class Config : IObject
{
/// Flags, see TL conditional fields
public Flags flags;
/// Current date at the server
public DateTime date;
/// Expiration date of this config: when it expires it'll have to be refetched using help.getConfig
public DateTime expires;
/// Whether we're connected to the test DCs
public bool test_mode;
/// ID of the DC that returned the reply
public int this_dc;
/// DC IP list
public DcOption[] dc_options;
/// Domain name for fetching encrypted DC list from DNS TXT record
public string dc_txt_domain_name;
/// Maximum member count for normal groups
public int chat_size_max;
/// Maximum member count for supergroups
public int megagroup_size_max;
/// Maximum number of messages that can be forwarded at once using messages.forwardMessages.
public int forwarded_count_max;
/// The client should update its online status every N milliseconds
public int online_update_period_ms;
/// Delay before offline status needs to be sent to the server
public int offline_blur_timeout_ms;
/// Time without any user activity after which it should be treated offline
public int offline_idle_timeout_ms;
/// If we are offline, but were online from some other client in last online_cloud_timeout_ms milliseconds after we had gone offline, then delay offline notification for notify_cloud_delay_ms milliseconds.
public int online_cloud_timeout_ms;
/// If we are offline, but online from some other client then delay sending the offline notification for notify_cloud_delay_ms milliseconds.
public int notify_cloud_delay_ms;
/// If some other client is online, then delay notification for notification_default_delay_ms milliseconds
public int notify_default_delay_ms;
/// Not for client use
public int push_chat_period_ms;
/// Not for client use
public int push_chat_limit;
/// Maximum count of saved gifs
public int saved_gifs_limit;
/// Only messages with age smaller than the one specified can be edited
public int edit_time_limit;
/// Only channel/supergroup messages with age smaller than the specified can be deleted
public int revoke_time_limit;
/// Only private messages with age smaller than the specified can be deleted
public int revoke_pm_time_limit;
/// Exponential decay rate for computing top peer rating
public int rating_e_decay;
/// Maximum number of recent stickers
public int stickers_recent_limit;
/// Maximum number of faved stickers
public int stickers_faved_limit;
/// Indicates that round videos (video notes) and voice messages sent in channels and older than the specified period must be marked as read
public int channels_read_media_period;
/// Temporary passport sessions
[IfFlag(0)] public int tmp_sessions;
/// Maximum count of pinned dialogs
public int pinned_dialogs_count_max;
/// Maximum count of dialogs per folder
public int pinned_infolder_count_max;
/// Maximum allowed outgoing ring time in VoIP calls: if the user we're calling doesn't reply within the specified time (in milliseconds), we should hang up the call
public int call_receive_timeout_ms;
/// Maximum allowed incoming ring time in VoIP calls: if the current user doesn't reply within the specified time (in milliseconds), the call will be automatically refused
public int call_ring_timeout_ms;
/// VoIP connection timeout: if the instance of libtgvoip on the other side of the call doesn't connect to our instance of libtgvoip within the specified time (in milliseconds), the call must be aborted
public int call_connect_timeout_ms;
/// If during a VoIP call a packet isn't received for the specified period of time, the call must be aborted
public int call_packet_timeout_ms;
/// The domain to use to parse in-app links.
For example t.me indicates that t.me/username links should parsed to @username, t.me/addsticker/name should be parsed to the appropriate stickerset and so on...
public string me_url_prefix;
/// URL to use to auto-update the current app
[IfFlag(7)] public string autoupdate_url_prefix;
/// Username of the bot to use to search for GIFs
[IfFlag(9)] public string gif_search_username;
/// Username of the bot to use to search for venues
[IfFlag(10)] public string venue_search_username;
/// Username of the bot to use for image search
[IfFlag(11)] public string img_search_username;
/// ID of the map provider to use for venues
[IfFlag(12)] public string static_maps_provider;
/// Maximum length of caption (length in utf8 codepoints)
public int caption_length_max;
/// Maximum length of messages (length in utf8 codepoints)
public int message_length_max;
/// DC ID to use to download webfiles
public int webfile_dc_id;
/// Suggested language code
[IfFlag(2)] public string suggested_lang_code;
/// Language pack version
[IfFlag(2)] public int lang_pack_version;
/// Basic language pack version
[IfFlag(2)] public int base_lang_pack_version;
[Flags] public enum Flags
{
/// Field has a value
has_tmp_sessions = 0x1,
/// Whether phone calls can be used
phonecalls_enabled = 0x2,
/// Field has a value
has_suggested_lang_code = 0x4,
/// Whether the client should use P2P by default for phone calls with contacts
default_p2p_contacts = 0x8,
/// Whether the client should preload featured stickers
preload_featured_stickers = 0x10,
/// Whether the client should ignore phone entities
ignore_phone_entities = 0x20,
/// Whether incoming private messages can be deleted for both participants
revoke_pm_inbox = 0x40,
/// Field has a value
has_autoupdate_url_prefix = 0x80,
/// Indicates that telegram is probably censored by governments/ISPs in the current region
blocked_mode = 0x100,
/// Field has a value
has_gif_search_username = 0x200,
/// Field has a value
has_venue_search_username = 0x400,
/// Field has a value
has_img_search_username = 0x800,
/// Field has a value
has_static_maps_provider = 0x1000,
/// Whether pfs was used
pfs_enabled = 0x2000,
}
}
/// Nearest data centre, according to geo-ip. See
[TLDef(0x8E1A1775)]
public class NearestDc : IObject
{
/// Country code determined by geo-ip
public string country;
/// Number of current data centre
public int this_dc;
/// Number of nearest data centre
public int nearest_dc;
}
/// An update is available for the application. See
/// a null value means help.noAppUpdate
[TLDef(0xCCBBCE30)]
public class Help_AppUpdate : IObject
{
/// Flags, see TL conditional fields
public Flags flags;
/// Update ID
public int id;
/// New version name
public string version;
/// Text description of the update
public string text;
/// Message entities for styled text
public MessageEntity[] entities;
/// Application binary
[IfFlag(1)] public DocumentBase document;
/// Application download URL
[IfFlag(2)] public string url;
/// Associated sticker
[IfFlag(3)] public DocumentBase sticker;
[Flags] public enum Flags
{
/// Unskippable, the new info must be shown to the user (with a popup or something else)
can_not_skip = 0x1,
/// Field has a value
has_document = 0x2,
/// Field has a value
has_url = 0x4,
/// Field has a value
has_sticker = 0x8,
}
}
/// Text of a text message with an invitation to install Telegram. See
[TLDef(0x18CB9F78)]
public class Help_InviteText : IObject
{
/// Text of the message
public string message;
}
/// Object contains info on an encrypted chat. Derived classes: , , , , See
public abstract class EncryptedChatBase : IObject
{
/// Chat ID
public abstract int ID { get; }
}
/// Empty constructor. See
[TLDef(0xAB7EC0A0)]
public class EncryptedChatEmpty : EncryptedChatBase
{
/// Chat ID
public int id;
/// Chat ID
public override int ID => id;
}
/// Chat waiting for approval of second participant. See
[TLDef(0x66B25953)]
public class EncryptedChatWaiting : EncryptedChatBase
{
/// Chat ID
public int id;
/// Checking sum depending on user ID
public long access_hash;
/// Date of chat creation
public DateTime date;
/// Chat creator ID
public long admin_id;
/// ID of second chat participant
public long participant_id;
/// Chat ID
public override int ID => id;
}
/// Request to create an encrypted chat. See
[TLDef(0x48F1D94C)]
public class EncryptedChatRequested : EncryptedChatBase
{
/// Flags, see TL conditional fields
public Flags flags;
/// Peer folder ID, for more info click here
[IfFlag(0)] public int folder_id;
/// Chat ID
public int id;
/// Check sum depending on user ID
public long access_hash;
/// Chat creation date
public DateTime date;
/// Chat creator ID
public long admin_id;
/// ID of second chat participant
public long participant_id;
/// A = g ^ a mod p, see Wikipedia
public byte[] g_a;
[Flags] public enum Flags
{
/// Field has a value
has_folder_id = 0x1,
}
/// Chat ID
public override int ID => id;
}
/// Encrypted chat See
[TLDef(0x61F0D4C7)]
public class EncryptedChat : EncryptedChatBase
{
/// Chat ID
public int id;
/// Check sum dependant on the user ID
public long access_hash;
/// Date chat was created
public DateTime date;
/// Chat creator ID
public long admin_id;
/// ID of the second chat participant
public long participant_id;
/// B = g ^ b mod p, if the currently authorized user is the chat's creator,
or A = g ^ a mod p otherwise
See Wikipedia for more info
public byte[] g_a_or_b;
/// 64-bit fingerprint of received key
public long key_fingerprint;
/// Chat ID
public override int ID => id;
}
/// Discarded or deleted chat. See
[TLDef(0x1E1C7C45)]
public class EncryptedChatDiscarded : EncryptedChatBase
{
/// Flags, see TL conditional fields
public Flags flags;
/// Chat ID
public int id;
[Flags] public enum Flags
{
/// Whether both users of this secret chat should also remove all of its messages
history_deleted = 0x1,
}
/// Chat ID
public override int ID => id;
}
/// Creates an encrypted chat. See
[TLDef(0xF141B5E1)]
public class InputEncryptedChat : IObject
{
/// Chat ID
public int chat_id;
/// ⚠ REQUIRED FIELD. See how to obtain it
Checking sum from constructor , or
public long access_hash;
}
/// Encrypted file. See
/// a null value means encryptedFileEmpty
[TLDef(0x4A70994C)]
public partial class EncryptedFile : IObject
{
/// File ID
public long id;
/// Checking sum depending on user ID
public long access_hash;
/// File size in bytes
public int size;
/// Number of data centre
public int dc_id;
/// 32-bit fingerprint of key used for file encryption
public int key_fingerprint;
}
/// Object sets encrypted file for attachment Derived classes: , , See
/// a null value means inputEncryptedFileEmpty
public abstract class InputEncryptedFileBase : IObject
{
/// Random file ID created by clien
public abstract long ID { get; }
}
/// Sets new encrypted file saved by parts using upload.saveFilePart method. See
[TLDef(0x64BD0306)]
public class InputEncryptedFileUploaded : InputEncryptedFileBase
{
/// Random file ID created by clien
public long id;
/// Number of saved parts
public int parts;
/// In case md5-HASH of the (already encrypted) file was transmitted, file content will be checked prior to use
public byte[] md5_checksum;
/// 32-bit fingerprint of the key used to encrypt a file
public int key_fingerprint;
/// Random file ID created by clien
public override long ID => id;
}
/// Sets forwarded encrypted file for attachment. See
[TLDef(0x5A17B5E5)]
public class InputEncryptedFile : InputEncryptedFileBase
{
/// File ID, value of id parameter from
public long id;
/// ⚠ REQUIRED FIELD. See how to obtain it
Checking sum, value of access_hash parameter from
public long access_hash;
/// File ID, value of id parameter from
public override long ID => id;
}
/// Assigns a new big encrypted file (over 10Mb in size), saved in parts using the method upload.saveBigFilePart. See
[TLDef(0x2DC173C8)]
public class InputEncryptedFileBigUploaded : InputEncryptedFileBase
{
/// Random file id, created by the client
public long id;
/// Number of saved parts
public int parts;
/// 32-bit imprint of the key used to encrypt the file
public int key_fingerprint;
/// Random file id, created by the client
public override long ID => id;
}
/// Object contains encrypted message. Derived classes: , See
public abstract class EncryptedMessageBase : IObject
{
/// Random message ID, assigned by the author of message
public abstract long RandomId { get; }
/// ID of encrypted chat
public abstract int ChatId { get; }
/// Date of sending
public abstract DateTime Date { get; }
/// TL-serialising of type, encrypted with the key creatied at stage of chat initialization
public abstract byte[] Bytes { get; }
}
/// Encrypted message. See
[TLDef(0xED18C118)]
public class EncryptedMessage : EncryptedMessageBase
{
/// Random message ID, assigned by the author of message
public long random_id;
/// ID of encrypted chat
public int chat_id;
/// Date of sending
public DateTime date;
/// TL-serialising of type, encrypted with the key creatied at stage of chat initialization
public byte[] bytes;
/// Attached encrypted file
public EncryptedFile file;
/// Random message ID, assigned by the author of message
public override long RandomId => random_id;
/// ID of encrypted chat
public override int ChatId => chat_id;
/// Date of sending
public override DateTime Date => date;
/// TL-serialising of type, encrypted with the key creatied at stage of chat initialization
public override byte[] Bytes => bytes;
}
/// Encrypted service message See
[TLDef(0x23734B06)]
public class EncryptedMessageService : EncryptedMessageBase
{
/// Random message ID, assigned by the author of message
public long random_id;
/// ID of encrypted chat
public int chat_id;
/// Date of sending
public DateTime date;
/// TL-serialising of type, encrypted with the key creatied at stage of chat initialization
public byte[] bytes;
/// Random message ID, assigned by the author of message
public override long RandomId => random_id;
/// ID of encrypted chat
public override int ChatId => chat_id;
/// Date of sending
public override DateTime Date => date;
/// TL-serialising of type, encrypted with the key creatied at stage of chat initialization
public override byte[] Bytes => bytes;
}
/// Contains info on cofiguring parameters for key generation by Diffie-Hellman protocol. Derived classes: , See
public abstract class Messages_DhConfigBase : IObject { }
/// Configuring parameters did not change. See
[TLDef(0xC0E24635)]
public class Messages_DhConfigNotModified : Messages_DhConfigBase
{
/// Random sequence of bytes of assigned length
public byte[] random;
}
/// New set of configuring parameters. See
[TLDef(0x2C221EDD)]
public class Messages_DhConfig : Messages_DhConfigBase
{
/// New value prime, see Wikipedia
public int g;
/// New value primitive root, see Wikipedia
public byte[] p;
/// Vestion of set of parameters
public int version;
/// Random sequence of bytes of assigned length
public byte[] random;
}
/// Message without file attachemts sent to an encrypted file. See
[TLDef(0x560F8935)]
public class Messages_SentEncryptedMessage : IObject
{
/// Date of sending
public DateTime date;
}
/// Message with a file enclosure sent to a protected chat See
[TLDef(0x9493FF32, inheritBefore = true)]
public class Messages_SentEncryptedFile : Messages_SentEncryptedMessage
{
/// Attached file
public EncryptedFile file;
}
/// Defines a video for subsequent interaction. See
/// a null value means inputDocumentEmpty
[TLDef(0x1ABFB575)]
public class InputDocument : IObject
{
/// Document ID
public long id;
/// ⚠ REQUIRED FIELD. See how to obtain it
access_hash parameter from the constructor
public long access_hash;
/// File reference
public byte[] file_reference;
}
/// A document. Derived classes: , See
public abstract partial class DocumentBase : IObject { }
/// Empty constructor, document doesn't exist. See
[TLDef(0x36F8C871)]
public partial class DocumentEmpty : DocumentBase
{
/// Document ID or 0
public long id;
}
/// Document See
[TLDef(0x1E87342B)]
public partial class Document : DocumentBase
{
/// Flags, see TL conditional fields
public Flags flags;
/// Document ID
public long id;
/// Check sum, dependant on document ID
public long access_hash;
/// File reference
public byte[] file_reference;
/// Creation date
public DateTime date;
/// MIME type
public string mime_type;
/// Size
public int size;
/// Thumbnails
[IfFlag(0)] public PhotoSizeBase[] thumbs;
/// Video thumbnails
[IfFlag(1)] public VideoSize[] video_thumbs;
/// DC ID
public int dc_id;
/// Attributes
public DocumentAttribute[] attributes;
[Flags] public enum Flags
{
/// Field has a value
has_thumbs = 0x1,
/// Field has a value
has_video_thumbs = 0x2,
}
}
/// Info on support user. See
[TLDef(0x17C6B5F6)]
public class Help_Support : IObject
{
/// Phone number
public string phone_number;
/// User
public UserBase user;
}
/// Object defines the set of users and/or groups that generate notifications. Derived classes: , , , See
public abstract class NotifyPeerBase : IObject { }
/// Notifications generated by a certain user or group. See
[TLDef(0x9FD40BD8)]
public class NotifyPeer : NotifyPeerBase
{
/// user or group
public Peer peer;
}
/// Notifications generated by all users. See
[TLDef(0xB4C83B4C)]
public class NotifyUsers : NotifyPeerBase { }
/// Notifications generated by all groups. See
[TLDef(0xC007CEC3)]
public class NotifyChats : NotifyPeerBase { }
/// Channel notification settings See
[TLDef(0xD612E8EF)]
public class NotifyBroadcasts : NotifyPeerBase { }
/// User actions. Use this to provide users with detailed info about their chat partners' actions: typing or sending attachments of all kinds. Derived classes: , , , , , , , , , , , , , , , , , See
public abstract partial class SendMessageAction : IObject { }
/// User is typing. See
[TLDef(0x16BF744E)]
public partial class SendMessageTypingAction : SendMessageAction { }
/// Invalidate all previous action updates. E.g. when user deletes entered text or aborts a video upload. See
[TLDef(0xFD5EC8F5)]
public partial class SendMessageCancelAction : SendMessageAction { }
/// User is recording a video. See
[TLDef(0xA187D66F)]
public class SendMessageRecordVideoAction : SendMessageAction { }
/// User is uploading a video. See
[TLDef(0xE9763AEC)]
public class SendMessageUploadVideoAction : SendMessageAction
{
/// Progress percentage
public int progress;
}
/// User is recording a voice message. See
[TLDef(0xD52F73F7)]
public class SendMessageRecordAudioAction : SendMessageAction { }
/// User is uploading a voice message. See
[TLDef(0xF351D7AB)]
public class SendMessageUploadAudioAction : SendMessageAction
{
/// Progress percentage
public int progress;
}
/// User is uploading a photo. See
[TLDef(0xD1D34A26)]
public class SendMessageUploadPhotoAction : SendMessageAction
{
/// Progress percentage
public int progress;
}
/// User is uploading a file. See
[TLDef(0xAA0CD9E4)]
public class SendMessageUploadDocumentAction : SendMessageAction
{
/// Progress percentage
public int progress;
}
/// User is selecting a location to share. See
[TLDef(0x176F8BA1)]
public partial class SendMessageGeoLocationAction : SendMessageAction { }
/// User is selecting a contact to share. See
[TLDef(0x628CBC6F)]
public class SendMessageChooseContactAction : SendMessageAction { }
/// User is playing a game See
[TLDef(0xDD6A8F48)]
public partial class SendMessageGamePlayAction : SendMessageAction { }
/// User is recording a round video to share See
[TLDef(0x88F27FBC)]
public class SendMessageRecordRoundAction : SendMessageAction { }
/// User is uploading a round video See
[TLDef(0x243E1C66)]
public class SendMessageUploadRoundAction : SendMessageAction
{
/// Progress percentage
public int progress;
}
/// User is currently speaking in the group call See
[TLDef(0xD92C2285)]
public partial class SpeakingInGroupCallAction : SendMessageAction { }
/// Chat history is being imported See
[TLDef(0xDBDA9246)]
public partial class SendMessageHistoryImportAction : SendMessageAction
{
/// Progress percentage
public int progress;
}
/// User is choosing a sticker See
[TLDef(0xB05AC6B1)]
public class SendMessageChooseStickerAction : SendMessageAction { }
/// User has clicked on an animated emoji triggering a reaction, click here for more info ». See
[TLDef(0x25972BCB)]
public partial class SendMessageEmojiInteraction : SendMessageAction
{
/// Emoji
public string emoticon;
/// Message ID of the animated emoji that was clicked
public int msg_id;
/// A JSON object with interaction info, click here for more info »
public DataJSON interaction;
}
/// User is watching an animated emoji reaction triggered by another user, click here for more info ». See
[TLDef(0xB665902E)]
public partial class SendMessageEmojiInteractionSeen : SendMessageAction
{
/// Emoji
public string emoticon;
}
/// Users found by name substring and auxiliary data. See
[TLDef(0xB3134D9D)]
public class Contacts_Found : IObject, IPeerResolver
{
/// Personalized results
public Peer[] my_results;
/// List of found user identifiers
public Peer[] results;
/// Found chats
public Dictionary chats;
/// List of users
public Dictionary users;
/// returns a or for the given Peer
public IPeerInfo UserOrChat(Peer peer) => peer.UserOrChat(users, chats);
}
/// Privacy key See
public enum InputPrivacyKey : uint
{
///Whether we can see the exact last online timestamp of the user
StatusTimestamp = 0x4F96CB18,
///Whether the user can be invited to chats
ChatInvite = 0xBDFB0426,
///Whether the user will accept phone calls
PhoneCall = 0xFABADC5F,
///Whether the user allows P2P communication during VoIP calls
PhoneP2P = 0xDB9E70D2,
///Whether messages forwarded from this user will be anonymous
Forwards = 0xA4DD4C08,
///Whether people will be able to see the user's profile picture
ProfilePhoto = 0x5719BACC,
///Whether people will be able to see the user's phone number
PhoneNumber = 0x0352DAFA,
///Whether people can add you to their contact list by your phone number
AddedByPhone = 0xD1219BDD,
}
/// Privacy key See
public enum PrivacyKey : uint
{
///Whether we can see the last online timestamp
StatusTimestamp = 0xBC2EAB30,
///Whether the user can be invited to chats
ChatInvite = 0x500E6DFA,
///Whether the user accepts phone calls
PhoneCall = 0x3D662B7B,
///Whether P2P connections in phone calls are allowed
PhoneP2P = 0x39491CC8,
///Whether messages forwarded from the user will be anonymously forwarded
Forwards = 0x69EC56A3,
///Whether the profile picture of the user is visible
ProfilePhoto = 0x96151FED,
///Whether the user allows us to see his phone number
PhoneNumber = 0xD19AE46D,
///Whether people can add you to their contact list by your phone number
AddedByPhone = 0x42FFD42B,
}
/// Privacy rule Derived classes: , , , , , , , See
public abstract class InputPrivacyRule : IObject { }
/// Allow only contacts See
[TLDef(0x0D09E07B)]
public class InputPrivacyValueAllowContacts : InputPrivacyRule { }
/// Allow all users See
[TLDef(0x184B35CE)]
public class InputPrivacyValueAllowAll : InputPrivacyRule { }
/// Allow only certain users See
[TLDef(0x131CC67F)]
public class InputPrivacyValueAllowUsers : InputPrivacyRule
{
/// Allowed users
public InputUserBase[] users;
}
/// Disallow only contacts See
[TLDef(0x0BA52007)]
public class InputPrivacyValueDisallowContacts : InputPrivacyRule { }
/// Disallow all See
[TLDef(0xD66B66C9)]
public class InputPrivacyValueDisallowAll : InputPrivacyRule { }
/// Disallow only certain users See
[TLDef(0x90110467)]
public class InputPrivacyValueDisallowUsers : InputPrivacyRule
{
/// Users to disallow
public InputUserBase[] users;
}
/// Allow only participants of certain chats See
[TLDef(0x840649CF)]
public class InputPrivacyValueAllowChatParticipants : InputPrivacyRule
{
/// Allowed chat IDs
public long[] chats;
}
/// Disallow only participants of certain chats See
[TLDef(0xE94F0F86)]
public class InputPrivacyValueDisallowChatParticipants : InputPrivacyRule
{
/// Disallowed chat IDs
public long[] chats;
}
/// Privacy rule Derived classes: , , , , , , , See
public abstract class PrivacyRule : IObject { }
/// Allow all contacts See
[TLDef(0xFFFE1BAC)]
public class PrivacyValueAllowContacts : PrivacyRule { }
/// Allow all users See
[TLDef(0x65427B82)]
public class PrivacyValueAllowAll : PrivacyRule { }
/// Allow only certain users See
[TLDef(0xB8905FB2)]
public class PrivacyValueAllowUsers : PrivacyRule
{
/// Allowed users
public long[] users;
}
/// Disallow only contacts See
[TLDef(0xF888FA1A)]
public class PrivacyValueDisallowContacts : PrivacyRule { }
/// Disallow all users See
[TLDef(0x8B73E763)]
public class PrivacyValueDisallowAll : PrivacyRule { }
/// Disallow only certain users See
[TLDef(0xE4621141)]
public class PrivacyValueDisallowUsers : PrivacyRule
{
/// Disallowed users
public long[] users;
}
/// Allow all participants of certain chats See
[TLDef(0x6B134E8E)]
public class PrivacyValueAllowChatParticipants : PrivacyRule
{
/// Allowed chats
public long[] chats;
}
/// Disallow only participants of certain chats See
[TLDef(0x41C87565)]
public class PrivacyValueDisallowChatParticipants : PrivacyRule
{
/// Disallowed chats
public long[] chats;
}
/// Privacy rules See
[TLDef(0x50A04E45)]
public class Account_PrivacyRules : IObject, IPeerResolver
{
/// Privacy rules
public PrivacyRule[] rules;
/// Chats to which the rules apply
public Dictionary chats;
/// Users to which the rules apply
public Dictionary users;
/// returns a or for the given Peer
public IPeerInfo UserOrChat(Peer peer) => peer.UserOrChat(users, chats);
}
/// Time to live in days of the current account See
[TLDef(0xB8D0AFDF)]
public class AccountDaysTTL : IObject
{
/// This account will self-destruct in the specified number of days
public int days;
}
/// Various possible attributes of a document (used to define if it's a sticker, a GIF, a video, a mask sticker, an image, an audio, and so on) Derived classes: , , , , , , See
public abstract class DocumentAttribute : IObject { }
/// Defines the width and height of an image uploaded as document See
[TLDef(0x6C37C15C)]
public class DocumentAttributeImageSize : DocumentAttribute
{
/// Width of image
public int w;
/// Height of image
public int h;
}
/// Defines an animated GIF See
[TLDef(0x11B58939)]
public class DocumentAttributeAnimated : DocumentAttribute { }
/// Defines a sticker See
[TLDef(0x6319D612)]
public class DocumentAttributeSticker : DocumentAttribute
{
/// Flags, see TL conditional fields
public Flags flags;
/// Alternative emoji representation of sticker
public string alt;
/// Associated stickerset
public InputStickerSet stickerset;
/// Mask coordinates (if this is a mask sticker, attached to a photo)
[IfFlag(0)] public MaskCoords mask_coords;
[Flags] public enum Flags
{
/// Field has a value
has_mask_coords = 0x1,
/// Whether this is a mask sticker
mask = 0x2,
}
}
/// Defines a video See
[TLDef(0x0EF02CE6)]
public class DocumentAttributeVideo : DocumentAttribute
{
/// Flags, see TL conditional fields
public Flags flags;
/// Duration in seconds
public int duration;
/// Video width
public int w;
/// Video height
public int h;
[Flags] public enum Flags
{
/// Whether this is a round video
round_message = 0x1,
/// Whether the video supports streaming
supports_streaming = 0x2,
}
}
/// Represents an audio file See
[TLDef(0x9852F9C6)]
public class DocumentAttributeAudio : DocumentAttribute
{
/// Flags, see TL conditional fields
public Flags flags;
/// Duration in seconds
public int duration;
/// Name of song
[IfFlag(0)] public string title;
/// Performer
[IfFlag(1)] public string performer;
/// Waveform
[IfFlag(2)] public byte[] waveform;
[Flags] public enum Flags
{
/// Field has a value
has_title = 0x1,
/// Field has a value
has_performer = 0x2,
/// Field has a value
has_waveform = 0x4,
/// Whether this is a voice message
voice = 0x400,
}
}
/// A simple document with a file name See
[TLDef(0x15590068)]
public class DocumentAttributeFilename : DocumentAttribute
{
/// The file name
public string file_name;
}
/// Whether the current document has stickers attached See
[TLDef(0x9801D2F7)]
public class DocumentAttributeHasStickers : DocumentAttribute { }
/// Found stickers See
/// a null value means messages.stickersNotModified
[TLDef(0x30A6EC7E)]
public class Messages_Stickers : IObject
{
/// Hash for pagination, for more info click here
public long hash;
/// Stickers
public DocumentBase[] stickers;
}
/// A stickerpack is a group of stickers associated to the same emoji.
It is not a sticker pack the way it is usually intended, you may be looking for a . See
[TLDef(0x12B299D4)]
public class StickerPack : IObject
{
/// Emoji
public string emoticon;
/// Stickers
public long[] documents;
}
/// Info about all installed stickers See
/// a null value means messages.allStickersNotModified
[TLDef(0xCDBBCEBB)]
public class Messages_AllStickers : IObject
{
/// Hash for pagination, for more info click here
public long hash;
/// All stickersets
public StickerSet[] sets;
}
/// Events affected by operation See
[TLDef(0x84D19185)]
public class Messages_AffectedMessages : IObject
{
/// Event count after generation
public int pts;
/// Number of events that were generated
public int pts_count;
}
/// Instant View webpage preview Derived classes: , , , See
public abstract class WebPageBase : IObject
{
/// Preview ID
public abstract long ID { get; }
}
/// No preview is available for the webpage See
[TLDef(0xEB1477E8)]
public class WebPageEmpty : WebPageBase
{
/// Preview ID
public long id;
/// Preview ID
public override long ID => id;
}
/// A preview of the webpage is currently being generated See
[TLDef(0xC586DA1C)]
public class WebPagePending : WebPageBase
{
/// ID of preview
public long id;
/// When was the processing started
public DateTime date;
/// ID of preview
public override long ID => id;
}
/// Webpage preview See
[TLDef(0xE89C45B2)]
public class WebPage : WebPageBase
{
/// Flags, see TL conditional fields
public Flags flags;
/// Preview ID
public long id;
/// URL of previewed webpage
public string url;
/// Webpage URL to be displayed to the user
public string display_url;
/// Hash for pagination, for more info click here
public int hash;
/// Type of the web page. Can be: article, photo, audio, video, document, profile, app, or something else
[IfFlag(0)] public string type;
/// Short name of the site (e.g., Google Docs, App Store)
[IfFlag(1)] public string site_name;
/// Title of the content
[IfFlag(2)] public string title;
/// Content description
[IfFlag(3)] public string description;
/// Image representing the content
[IfFlag(4)] public PhotoBase photo;
/// URL to show in the embedded preview
[IfFlag(5)] public string embed_url;
/// MIME type of the embedded preview, (e.g., text/html or video/mp4)
[IfFlag(5)] public string embed_type;
/// Width of the embedded preview
[IfFlag(6)] public int embed_width;
/// Height of the embedded preview
[IfFlag(6)] public int embed_height;
/// Duration of the content, in seconds
[IfFlag(7)] public int duration;
/// Author of the content
[IfFlag(8)] public string author;
/// Preview of the content as a media file
[IfFlag(9)] public DocumentBase document;
/// Page contents in instant view format
[IfFlag(10)] public Page cached_page;
/// Webpage attributes
[IfFlag(12)] public WebPageAttribute[] attributes;
[Flags] public enum Flags
{
/// Field has a value
has_type = 0x1,
/// Field has a value
has_site_name = 0x2,
/// Field has a value
has_title = 0x4,
/// Field has a value
has_description = 0x8,
/// Field has a value
has_photo = 0x10,
/// Field has a value
has_embed_url = 0x20,
/// Field has a value
has_embed_width = 0x40,
/// Field has a value
has_duration = 0x80,
/// Field has a value
has_author = 0x100,
/// Field has a value
has_document = 0x200,
/// Field has a value
has_cached_page = 0x400,
/// Field has a value
has_attributes = 0x1000,
}
/// Preview ID
public override long ID => id;
}
/// The preview of the webpage hasn't changed See
[TLDef(0x7311CA11)]
public class WebPageNotModified : WebPageBase
{
/// Flags, see TL conditional fields
public Flags flags;
/// Page view count
[IfFlag(0)] public int cached_page_views;
[Flags] public enum Flags
{
/// Field has a value
has_cached_page_views = 0x1,
}
public override long ID => default;
}
/// Logged-in session See
[TLDef(0xAD01D61D)]
public class Authorization : IObject
{
/// Flags, see TL conditional fields
public Flags flags;
/// Identifier
public long hash;
/// Device model
public string device_model;
/// Platform
public string platform;
/// System version
public string system_version;
/// API ID
public int api_id;
/// App name
public string app_name;
/// App version
public string app_version;
/// When was the session created
public int date_created;
/// When was the session last active
public int date_active;
/// Last known IP
public string ip;
/// Country determined from IP
public string country;
/// Region determined from IP
public string region;
[Flags] public enum Flags
{
/// Whether this is the current session
current = 0x1,
/// Whether the session is from an official app
official_app = 0x2,
/// Whether the session is still waiting for a 2FA password
password_pending = 0x4,
encrypted_requests_disabled = 0x8,
call_requests_disabled = 0x10,
}
}
/// Logged-in sessions See
[TLDef(0x4BFF8EA0)]
public class Account_Authorizations : IObject
{
public int authorization_ttl_days;
/// Logged-in sessions
public Authorization[] authorizations;
}
/// Configuration for two-factor authorization See
[TLDef(0x185B184F)]
public class Account_Password : IObject
{
/// Flags, see TL conditional fields
public Flags flags;
/// The KDF algorithm for SRP two-factor authentication of the current password
[IfFlag(2)] public PasswordKdfAlgo current_algo;
/// Srp B param for SRP authorization
[IfFlag(2)] public byte[] srp_B;
/// Srp ID param for SRP authorization
[IfFlag(2)] public long srp_id;
/// Text hint for the password
[IfFlag(3)] public string hint;
/// A password recovery email with the specified pattern is still awaiting verification
[IfFlag(4)] public string email_unconfirmed_pattern;
/// The KDF algorithm for SRP two-factor authentication to use when creating new passwords
public PasswordKdfAlgo new_algo;
/// The KDF algorithm for telegram passport
public SecurePasswordKdfAlgo new_secure_algo;
/// Secure random string
public byte[] secure_random;
/// The 2FA password will be automatically removed at this date, unless the user cancels the operation
[IfFlag(5)] public DateTime pending_reset_date;
[Flags] public enum Flags
{
/// Whether the user has a recovery method configured
has_recovery = 0x1,
/// Whether telegram passport is enabled
has_secure_values = 0x2,
/// Whether the user has a password
has_password = 0x4,
/// Field has a value
has_hint = 0x8,
/// Field has a value
has_email_unconfirmed_pattern = 0x10,
/// Field has a value
has_pending_reset_date = 0x20,
}
}
/// Private info associated to the password info (recovery email, telegram passport info & so on) See
[TLDef(0x9A5C33E5)]
public class Account_PasswordSettings : IObject
{
/// Flags, see TL conditional fields
public Flags flags;
/// 2FA Recovery email
[IfFlag(0)] public string email;
/// Telegram passport settings
[IfFlag(1)] public SecureSecretSettings secure_settings;
[Flags] public enum Flags
{
/// Field has a value
has_email = 0x1,
/// Field has a value
has_secure_settings = 0x2,
}
}
/// Settings for setting up a new password See
[TLDef(0xC23727C9)]
public class Account_PasswordInputSettings : IObject
{
/// Flags, see TL conditional fields
public Flags flags;
/// The SRP algorithm to use
[IfFlag(0)] public PasswordKdfAlgo new_algo;
/// The computed password hash
[IfFlag(0)] public byte[] new_password_hash;
/// Text hint for the password
[IfFlag(0)] public string hint;
/// Password recovery email
[IfFlag(1)] public string email;
/// Telegram passport settings
[IfFlag(2)] public SecureSecretSettings new_secure_settings;
[Flags] public enum Flags
{
/// Field has a value
has_new_algo = 0x1,
/// Field has a value
has_email = 0x2,
/// Field has a value
has_new_secure_settings = 0x4,
}
}
/// Recovery info of a 2FA password, only for accounts with a recovery email configured. See
[TLDef(0x137948A5)]
public class Auth_PasswordRecovery : IObject
{
/// The email to which the recovery code was sent must match this pattern.
public string email_pattern;
}
/// Message ID, for which PUSH-notifications were cancelled. See
[TLDef(0xA384B779)]
public class ReceivedNotifyMessage : IObject
{
/// Message ID, for which PUSH-notifications were canceled
public int id;
/// Reserved for future use
public int flags;
}
/// Exported chat invite Derived classes: See
public abstract class ExportedChatInvite : IObject { }
/// Exported chat invite See
[TLDef(0x0AB4A819)]
public class ChatInviteExported : ExportedChatInvite
{
/// Flags, see TL conditional fields
public Flags flags;
/// Chat invitation link
public string link;
/// ID of the admin that created this chat invite
public long admin_id;
/// When was this chat invite created
public DateTime date;
/// When was this chat invite last modified
[IfFlag(4)] public DateTime start_date;
/// When does this chat invite expire
[IfFlag(1)] public DateTime expire_date;
/// Maximum number of users that can join using this link
[IfFlag(2)] public int usage_limit;
/// How many users joined using this link
[IfFlag(3)] public int usage;
[IfFlag(7)] public int requested;
[IfFlag(8)] public string title;
[Flags] public enum Flags
{
/// Whether this chat invite was revoked
revoked = 0x1,
/// Field has a value
has_expire_date = 0x2,
/// Field has a value
has_usage_limit = 0x4,
/// Field has a value
has_usage = 0x8,
/// Field has a value
has_start_date = 0x10,
/// Whether this chat invite has no expiration
permanent = 0x20,
request_needed = 0x40,
/// Field has a value
has_requested = 0x80,
/// Field has a value
has_title = 0x100,
}
}
/// Chat invite Derived classes: , , See
public abstract class ChatInviteBase : IObject { }
/// The user has already joined this chat See
[TLDef(0x5A686D7C)]
public class ChatInviteAlready : ChatInviteBase
{
/// The chat connected to the invite
public ChatBase chat;
}
/// Chat invite info See
[TLDef(0x300C44C1)]
public class ChatInvite : ChatInviteBase
{
/// Flags, see TL conditional fields
public Flags flags;
/// Chat/supergroup/channel title
public string title;
[IfFlag(5)] public string about;
/// Chat/supergroup/channel photo
public PhotoBase photo;
/// Participant count
public int participants_count;
/// A few of the participants that are in the group
[IfFlag(4)] public UserBase[] participants;
[Flags] public enum Flags
{
/// Whether this is a channel/supergroup or a normal group
channel = 0x1,
/// Whether this is a channel
broadcast = 0x2,
/// Whether this is a public channel/supergroup
public_ = 0x4,
/// Whether this is a supergroup
megagroup = 0x8,
/// Field has a value
has_participants = 0x10,
/// Field has a value
has_about = 0x20,
request_needed = 0x40,
}
}
/// A chat invitation that also allows peeking into the group to read messages without joining it. See
[TLDef(0x61695CB0)]
public class ChatInvitePeek : ChatInviteBase
{
/// Chat information
public ChatBase chat;
/// Read-only anonymous access to this group will be revoked at this date
public DateTime expires;
}
/// Represents a stickerset Derived classes: , , , , See
/// a null value means inputStickerSetEmpty
public abstract class InputStickerSet : IObject { }
/// Stickerset by ID See
[TLDef(0x9DE7A269)]
public class InputStickerSetID : InputStickerSet
{
/// ID
public long id;
/// ⚠ REQUIRED FIELD. See how to obtain it
Access hash
public long access_hash;
}
/// Stickerset by short name, from tg://addstickers?set=short_name See
[TLDef(0x861CC8A0)]
public class InputStickerSetShortName : InputStickerSet
{
/// From tg://addstickers?set=short_name
public string short_name;
}
/// Animated emojis stickerset See
[TLDef(0x028703C8)]
public class InputStickerSetAnimatedEmoji : InputStickerSet { }
/// Used for fetching animated dice stickers See
[TLDef(0xE67F520E)]
public class InputStickerSetDice : InputStickerSet
{
/// The emoji, for now 🏀, 🎲 and 🎯 are supported
public string emoticon;
}
/// Animated emoji reaction stickerset (contains animations to play when a user clicks on a given animated emoji) See
[TLDef(0x0CDE3739)]
public class InputStickerSetAnimatedEmojiAnimations : InputStickerSet { }
/// Represents a stickerset (stickerpack) See
[TLDef(0xD7DF217A)]
public partial class StickerSet : IObject
{
/// Flags, see TL conditional fields
public Flags flags;
/// When was this stickerset installed
[IfFlag(0)] public DateTime installed_date;
/// ID of the stickerset
public long id;
/// Access hash of stickerset
public long access_hash;
/// Title of stickerset
public string title;
/// Short name of stickerset to use in tg://addstickers?set=short_name
public string short_name;
/// Stickerset thumbnail
[IfFlag(4)] public PhotoSizeBase[] thumbs;
/// DC ID of thumbnail
[IfFlag(4)] public int thumb_dc_id;
/// Thumbnail version
[IfFlag(4)] public int thumb_version;
/// Number of stickers in pack
public int count;
/// Hash
public int hash;
[Flags] public enum Flags
{
/// Field has a value
has_installed_date = 0x1,
/// Whether this stickerset was archived (due to too many saved stickers in the current account)
archived = 0x2,
/// Is this stickerset official
official = 0x4,
/// Is this a mask stickerset
masks = 0x8,
/// Field has a value
has_thumbs = 0x10,
/// Is this an animated stickerpack
animated = 0x20,
}
}
/// Stickerset and stickers inside it See
/// a null value means messages.stickerSetNotModified
[TLDef(0xB60A24A6)]
public class Messages_StickerSet : IObject
{
/// The stickerset
public StickerSet set;
/// Emoji info for stickers
public StickerPack[] packs;
/// Stickers in stickerset
public DocumentBase[] documents;
}
/// Describes a bot command that can be used in a chat See
[TLDef(0xC27AC8C7)]
public class BotCommand : IObject
{
/// /command name
public string command;
/// Description of the command
public string description;
}
/// Info about bots (available bot commands, etc) See
[TLDef(0x1B74B335)]
public class BotInfo : IObject
{
/// ID of the bot
public long user_id;
/// Description of the bot
public string description;
/// Bot commands that can be used in the chat
public BotCommand[] commands;
}
/// Bot or inline keyboard buttons Derived classes: , , , , , , , , , , See
public abstract class KeyboardButtonBase : IObject
{
/// Button text
public abstract string Text { get; }
}
/// Bot keyboard button See
[TLDef(0xA2FA4880)]
public class KeyboardButton : KeyboardButtonBase
{
/// Button text
public string text;
/// Button text
public override string Text => text;
}
/// URL button See
[TLDef(0x258AFF05, inheritBefore = true)]
public class KeyboardButtonUrl : KeyboardButton
{
/// URL
public string url;
}
/// Callback button See
[TLDef(0x35BBDB6B)]
public class KeyboardButtonCallback : KeyboardButtonBase
{
/// Flags, see TL conditional fields
public Flags flags;
/// Button text
public string text;
/// Callback data
public byte[] data;
[Flags] public enum Flags
{
/// Whether the user should verify his identity by entering his 2FA SRP parameters to the messages.getBotCallbackAnswer method. NOTE: telegram and the bot WILL NOT have access to the plaintext password, thanks to SRP. This button is mainly used by the official @botfather bot, for verifying the user's identity before transferring ownership of a bot to another user.
requires_password = 0x1,
}
/// Button text
public override string Text => text;
}
/// Button to request a user's phone number See
[TLDef(0xB16A6C29)]
public class KeyboardButtonRequestPhone : KeyboardButton
{
}
/// Button to request a user's geolocation See
[TLDef(0xFC796B3F)]
public class KeyboardButtonRequestGeoLocation : KeyboardButton
{
}
/// Button to force a user to switch to inline mode Pressing the button will prompt the user to select one of their chats, open that chat and insert the bot‘s username and the specified inline query in the input field. See
[TLDef(0x0568A748)]
public class KeyboardButtonSwitchInline : KeyboardButtonBase
{
/// Flags, see TL conditional fields
public Flags flags;
/// Button label
public string text;
/// The inline query to use
public string query;
[Flags] public enum Flags
{
/// If set, pressing the button will insert the bot‘s username and the specified inline query in the current chat's input field.
same_peer = 0x1,
}
/// Button label
public override string Text => text;
}
/// Button to start a game See
[TLDef(0x50F41CCF)]
public class KeyboardButtonGame : KeyboardButton
{
}
/// Button to buy a product See
[TLDef(0xAFD93FBB)]
public class KeyboardButtonBuy : KeyboardButton
{
}
/// Button to request a user to authorize via URL using Seamless Telegram Login. When the user clicks on such a button, messages.requestUrlAuth should be called, providing the button_id and the ID of the container message. The returned object will contain more details about the authorization request (request_write_access if the bot would like to send messages to the user along with the username of the bot which will be used for user authorization). Finally, the user can choose to call messages.acceptUrlAuth to get a with the URL to open instead of the url of this constructor, or a , in which case the url of this constructor must be opened, instead. If the user refuses the authorization request but still wants to open the link, the url of this constructor must be used. See
[TLDef(0x10B78D29)]
public class KeyboardButtonUrlAuth : KeyboardButtonBase
{
/// Flags, see TL conditional fields
public Flags flags;
/// Button label
public string text;
/// New text of the button in forwarded messages.
[IfFlag(0)] public string fwd_text;
/// An HTTP URL to be opened with user authorization data added to the query string when the button is pressed. If the user refuses to provide authorization data, the original URL without information about the user will be opened. The data added is the same as described in Receiving authorization data.
NOTE: Services must always check the hash of the received data to verify the authentication and the integrity of the data as described in Checking authorization.
public string url;
/// ID of the button to pass to messages.requestUrlAuth
public int button_id;
[Flags] public enum Flags
{
/// Field has a value
has_fwd_text = 0x1,
}
/// Button label
public override string Text => text;
}
/// Button to request a user to authorize via URL using Seamless Telegram Login. See
[TLDef(0xD02E7FD4)]
public class InputKeyboardButtonUrlAuth : KeyboardButtonBase
{
/// Flags, see TL conditional fields
public Flags flags;
/// Button text
public string text;
/// New text of the button in forwarded messages.
[IfFlag(1)] public string fwd_text;
/// An HTTP URL to be opened with user authorization data added to the query string when the button is pressed. If the user refuses to provide authorization data, the original URL without information about the user will be opened. The data added is the same as described in Receiving authorization data.
NOTE: You must always check the hash of the received data to verify the authentication and the integrity of the data as described in Checking authorization.
public string url;
/// Username of a bot, which will be used for user authorization. See Setting up a bot for more details. If not specified, the current bot's username will be assumed. The url's domain must be the same as the domain linked with the bot. See Linking your domain to the bot for more details.
public InputUserBase bot;
[Flags] public enum Flags
{
/// Set this flag to request the permission for your bot to send messages to the user.
request_write_access = 0x1,
/// Field has a value
has_fwd_text = 0x2,
}
/// Button text
public override string Text => text;
}
/// A button that allows the user to create and send a poll when pressed; available only in private See
[TLDef(0xBBC7515D)]
public class KeyboardButtonRequestPoll : KeyboardButton
{
/// Flags, see TL conditional fields
public Flags flags;
/// If set, only quiz polls can be sent
[IfFlag(0)] public bool quiz;
[Flags] public enum Flags
{
/// Field has a value
has_quiz = 0x1,
}
}
/// See
[TLDef(0xE988037B)]
public class InputKeyboardButtonUserProfile : KeyboardButtonBase
{
public string text;
public InputUserBase user_id;
public override string Text => text;
}
/// See
[TLDef(0x308660C1, inheritBefore = true)]
public class KeyboardButtonUserProfile : KeyboardButton
{
public long user_id;
}
/// Inline keyboard row See
[TLDef(0x77608B83)]
public class KeyboardButtonRow : IObject
{
/// Bot or inline keyboard buttons
public KeyboardButtonBase[] buttons;
}
/// Reply markup for bot and inline keyboards Derived classes: , , , See
public abstract class ReplyMarkup : IObject { }
/// Hide sent bot keyboard See
[TLDef(0xA03E5B85)]
public class ReplyKeyboardHide : ReplyMarkup
{
/// Flags, see TL conditional fields
public Flags flags;
[Flags] public enum Flags
{
/// Use this flag if you want to remove the keyboard for specific users only. Targets: 1) users that are @mentioned in the text of the Message object; 2) if the bot's message is a reply (has reply_to_message_id), sender of the original message.
Example: A user votes in a poll, bot returns confirmation message in reply to the vote and removes the keyboard for that user, while still showing the keyboard with poll options to users who haven't voted yet
selective = 0x4,
}
}
/// Force the user to send a reply See
[TLDef(0x86B40B08)]
public class ReplyKeyboardForceReply : ReplyMarkup
{
/// Flags, see TL conditional fields
public Flags flags;
/// The placeholder to be shown in the input field when the keyboard is active; 1-64 characters.
[IfFlag(3)] public string placeholder;
[Flags] public enum Flags
{
/// Requests clients to hide the keyboard as soon as it's been used. The keyboard will still be available, but clients will automatically display the usual letter-keyboard in the chat – the user can press a special button in the input field to see the custom keyboard again.
single_use = 0x2,
/// Use this parameter if you want to show the keyboard to specific users only. Targets: 1) users that are @mentioned in the text of the Message object; 2) if the bot's message is a reply (has reply_to_message_id), sender of the original message.
Example: A user requests to change the bot‘s language, bot replies to the request with a keyboard to select the new language. Other users in the group don’t see the keyboard.
selective = 0x4,
/// Field has a value
has_placeholder = 0x8,
}
}
/// Bot keyboard See
[TLDef(0x85DD99D1)]
public class ReplyKeyboardMarkup : ReplyMarkup
{
/// Flags, see TL conditional fields
public Flags flags;
/// Button row
public KeyboardButtonRow[] rows;
/// The placeholder to be shown in the input field when the keyboard is active; 1-64 characters.
[IfFlag(3)] public string placeholder;
[Flags] public enum Flags
{
/// Requests clients to resize the keyboard vertically for optimal fit (e.g., make the keyboard smaller if there are just two rows of buttons). If not set, the custom keyboard is always of the same height as the app's standard keyboard.
resize = 0x1,
/// Requests clients to hide the keyboard as soon as it's been used. The keyboard will still be available, but clients will automatically display the usual letter-keyboard in the chat – the user can press a special button in the input field to see the custom keyboard again.
single_use = 0x2,
/// Use this parameter if you want to show the keyboard to specific users only. Targets: 1) users that are @mentioned in the text of the Message object; 2) if the bot's message is a reply (has reply_to_message_id), sender of the original message.
Example: A user requests to change the bot‘s language, bot replies to the request with a keyboard to select the new language. Other users in the group don’t see the keyboard.
selective = 0x4,
/// Field has a value
has_placeholder = 0x8,
}
}
/// Bot or inline keyboard See
[TLDef(0x48A30254)]
public class ReplyInlineMarkup : ReplyMarkup
{
/// Bot or inline keyboard rows
public KeyboardButtonRow[] rows;
}
/// Message entities, representing styled text in a message Derived classes: , , , , , , , , , , , , , , , , , , See
public abstract class MessageEntity : IObject
{
/// Offset of message entity within message (in UTF-8 codepoints)
public int offset;
/// Length of message entity within message (in UTF-8 codepoints)
public int length;
}
/// Unknown message entity See
[TLDef(0xBB92BA95)]
public class MessageEntityUnknown : MessageEntity { }
/// Message entity mentioning the current user See
[TLDef(0xFA04579D)]
public class MessageEntityMention : MessageEntity { }
/// #hashtag message entity See
[TLDef(0x6F635B0D)]
public class MessageEntityHashtag : MessageEntity { }
/// Message entity representing a bot /command See
[TLDef(0x6CEF8AC7)]
public class MessageEntityBotCommand : MessageEntity { }
/// Message entity representing an in-text url: https://google.com; for text urls, use . See
[TLDef(0x6ED02538)]
public class MessageEntityUrl : MessageEntity { }
/// Message entity representing an email@example.com. See
[TLDef(0x64E475C2)]
public class MessageEntityEmail : MessageEntity { }
/// Message entity representing bold text. See
[TLDef(0xBD610BC9)]
public class MessageEntityBold : MessageEntity { }
/// Message entity representing italic text. See
[TLDef(0x826F8B60)]
public class MessageEntityItalic : MessageEntity { }
/// Message entity representing a codeblock. See
[TLDef(0x28A20571)]
public class MessageEntityCode : MessageEntity { }
/// Message entity representing a preformatted codeblock, allowing the user to specify a programming language for the codeblock. See
[TLDef(0x73924BE0, inheritBefore = true)]
public class MessageEntityPre : MessageEntity
{
/// Programming language of the code
public string language;
}
/// Message entity representing a text url: for in-text urls like https://google.com use . See
[TLDef(0x76A6D327, inheritBefore = true)]
public class MessageEntityTextUrl : MessageEntity
{
/// The actual URL
public string url;
}
/// Message entity representing a user mention: for creating a mention use . See
[TLDef(0xDC7B1140, inheritBefore = true)]
public class MessageEntityMentionName : MessageEntity
{
/// Identifier of the user that was mentioned
public long user_id;
}
/// Message entity that can be used to create a user user mention: received mentions use the constructor, instead. See
[TLDef(0x208E68C9, inheritBefore = true)]
public class InputMessageEntityMentionName : MessageEntity
{
/// Identifier of the user that was mentioned
public InputUserBase user_id;
}
/// Message entity representing a phone number. See
[TLDef(0x9B69E34B)]
public class MessageEntityPhone : MessageEntity { }
/// Message entity representing a $cashtag. See
[TLDef(0x4C4E743F)]
public class MessageEntityCashtag : MessageEntity { }
/// Message entity representing underlined text. See
[TLDef(0x9C4E7E8B)]
public class MessageEntityUnderline : MessageEntity { }
/// Message entity representing strikethrough text. See
[TLDef(0xBF0693D4)]
public class MessageEntityStrike : MessageEntity { }
/// Message entity representing a block quote. See
[TLDef(0x020DF5D0)]
public class MessageEntityBlockquote : MessageEntity { }
/// Indicates a credit card number See
[TLDef(0x761E6AF4)]
public class MessageEntityBankCard : MessageEntity { }
/// See
[TLDef(0x32CA960F)]
public class MessageEntitySpoiler : MessageEntity { }
/// Represents a channel Derived classes: , See
/// a null value means inputChannelEmpty
public abstract class InputChannelBase : IObject
{
/// Channel ID
public abstract long ChannelId { get; }
}
/// Represents a channel See
[TLDef(0xF35AEC28)]
public partial class InputChannel : InputChannelBase
{
/// Channel ID
public long channel_id;
/// ⚠ REQUIRED FIELD. See how to obtain it
Access hash taken from the constructor
public long access_hash;
/// Channel ID
public override long ChannelId => channel_id;
}
/// Defines a min channel that was seen in a certain message of a certain chat. See
[TLDef(0x5B934F9D)]
public class InputChannelFromMessage : InputChannelBase
{
/// The chat where the channel was seen
public InputPeer peer;
/// The message ID in the chat where the channel was seen
public int msg_id;
/// The channel ID
public long channel_id;
/// The channel ID
public override long ChannelId => channel_id;
}
/// Resolved peer See
[TLDef(0x7F077AD9)]
public partial class Contacts_ResolvedPeer : IObject
{
/// The peer
public Peer peer;
/// Chats
public Dictionary chats;
/// Users
public Dictionary users;
/// returns a or for the result
public IPeerInfo UserOrChat => peer.UserOrChat(users, chats);
}
/// Indicates a range of chat messages See
[TLDef(0x0AE30253)]
public class MessageRange : IObject
{
/// Start of range (message ID)
public int min_id;
/// End of range (message ID)
public int max_id;
}
/// Contains the difference (new messages) between our local channel state and the remote state Derived classes: , , See
public abstract partial class Updates_ChannelDifferenceBase : IObject, IPeerResolver
{
/// returns a or for the given Peer
public abstract IPeerInfo UserOrChat(Peer peer);
}
/// There are no new updates See
[TLDef(0x3E11AFFB)]
public partial class Updates_ChannelDifferenceEmpty : Updates_ChannelDifferenceBase, IPeerResolver
{
/// Flags, see TL conditional fields
public Flags flags;
/// The latest PTS
public int pts;
/// Clients are supposed to refetch the channel difference after timeout seconds have elapsed
[IfFlag(1)] public int timeout;
[Flags] public enum Flags
{
/// Whether there are more updates that must be fetched (always false)
final = 0x1,
/// Field has a value
has_timeout = 0x2,
}
/// returns a or for the given Peer
public override IPeerInfo UserOrChat(Peer peer) => null;
}
/// The provided pts + limit < remote pts. Simply, there are too many updates to be fetched (more than limit), the client has to resolve the update gap in one of the following ways: See
[TLDef(0xA4BCC6FE)]
public partial class Updates_ChannelDifferenceTooLong : Updates_ChannelDifferenceBase, IPeerResolver
{
/// Flags, see TL conditional fields
public Flags flags;
/// Clients are supposed to refetch the channel difference after timeout seconds have elapsed
[IfFlag(1)] public int timeout;
/// Dialog containing the latest PTS that can be used to reset the channel state
public DialogBase dialog;
/// The latest messages
public MessageBase[] messages;
/// Chats from messages
public Dictionary chats;
/// Users from messages
public Dictionary users;
[Flags] public enum Flags
{
/// Whether there are more updates that must be fetched (always false)
final = 0x1,
/// Field has a value
has_timeout = 0x2,
}
/// returns a or for the given Peer
public override IPeerInfo UserOrChat(Peer peer) => peer.UserOrChat(users, chats);
}
/// The new updates See
[TLDef(0x2064674E)]
public partial class Updates_ChannelDifference : Updates_ChannelDifferenceBase, IPeerResolver
{
/// Flags, see TL conditional fields
public Flags flags;
/// The PTS from which to start getting updates the next time
public int pts;
/// Clients are supposed to refetch the channel difference after timeout seconds have elapsed
[IfFlag(1)] public int timeout;
/// New messages
public MessageBase[] new_messages;
/// Other updates
public Update[] other_updates;
/// Chats
public Dictionary chats;
/// Users
public Dictionary users;
[Flags] public enum Flags
{
/// Whether there are more updates to be fetched using getDifference, starting from the provided pts
final = 0x1,
/// Field has a value
has_timeout = 0x2,
}
/// returns a or for the given Peer
public override IPeerInfo UserOrChat(Peer peer) => peer.UserOrChat(users, chats);
}
/// Filter for getting only certain types of channel messages See
/// a null value means channelMessagesFilterEmpty
[TLDef(0xCD77D957)]
public class ChannelMessagesFilter : IObject
{
/// Flags, see TL conditional fields
public Flags flags;
/// A range of messages to fetch
public MessageRange[] ranges;
[Flags] public enum Flags
{
/// Whether to exclude new messages from the search
exclude_new_messages = 0x2,
}
}
/// Channel participant Derived classes: , , , , , See
public abstract partial class ChannelParticipantBase : IObject { }
/// Channel/supergroup participant See
[TLDef(0xC00C07C0)]
public partial class ChannelParticipant : ChannelParticipantBase
{
/// Pariticipant user ID
public long user_id;
/// Date joined
public DateTime date;
}
/// Myself See
[TLDef(0x35A8BFA7)]
public partial class ChannelParticipantSelf : ChannelParticipantBase
{
public Flags flags;
/// User ID
public long user_id;
/// User that invited me to the channel/supergroup
public long inviter_id;
/// When did I join the channel/supergroup
public DateTime date;
[Flags] public enum Flags
{
via_request = 0x1,
}
}
/// Channel/supergroup creator See
[TLDef(0x2FE601D3)]
public partial class ChannelParticipantCreator : ChannelParticipantBase
{
/// Flags, see TL conditional fields
public Flags flags;
/// User ID
public long user_id;
/// Creator admin rights
public ChatAdminRights admin_rights;
/// The role (rank) of the group creator in the group: just an arbitrary string, admin by default
[IfFlag(0)] public string rank;
[Flags] public enum Flags
{
/// Field has a value
has_rank = 0x1,
}
}
/// Admin See
[TLDef(0x34C3BB53)]
public partial class ChannelParticipantAdmin : ChannelParticipantBase
{
/// Flags, see TL conditional fields
public Flags flags;
/// Admin user ID
public long user_id;
/// User that invited the admin to the channel/group
[IfFlag(1)] public long inviter_id;
/// User that promoted the user to admin
public long promoted_by;
/// When did the user join
public DateTime date;
/// Admin rights
public ChatAdminRights admin_rights;
/// The role (rank) of the admin in the group: just an arbitrary string, admin by default
[IfFlag(2)] public string rank;
[Flags] public enum Flags
{
/// Can this admin promote other admins with the same permissions?
can_edit = 0x1,
/// Is this the current user
self = 0x2,
/// Field has a value
has_rank = 0x4,
}
}
/// Banned/kicked user See
[TLDef(0x6DF8014E)]
public partial class ChannelParticipantBanned : ChannelParticipantBase
{
/// Flags, see TL conditional fields
public Flags flags;
/// The banned peer
public Peer peer;
/// User was kicked by the specified admin
public long kicked_by;
/// When did the user join the group
public DateTime date;
/// Banned rights
public ChatBannedRights banned_rights;
[Flags] public enum Flags
{
/// Whether the user has left the group
left = 0x1,
}
}
/// A participant that left the channel/supergroup See
[TLDef(0x1B03F006)]
public partial class ChannelParticipantLeft : ChannelParticipantBase
{
/// The peer that left
public Peer peer;
}
/// Filter for fetching channel participants Derived classes: , , , , , , , See
public abstract class ChannelParticipantsFilter : IObject { }
/// Fetch only recent participants See
[TLDef(0xDE3F3C79)]
public class ChannelParticipantsRecent : ChannelParticipantsFilter { }
/// Fetch only admin participants See
[TLDef(0xB4608969)]
public class ChannelParticipantsAdmins : ChannelParticipantsFilter { }
/// Fetch only kicked participants See
[TLDef(0xA3B54985)]
public class ChannelParticipantsKicked : ChannelParticipantsFilter
{
/// Optional filter for searching kicked participants by name (otherwise empty)
public string q;
}
/// Fetch only bot participants See
[TLDef(0xB0D1865B)]
public class ChannelParticipantsBots : ChannelParticipantsFilter { }
/// Fetch only banned participants See
[TLDef(0x1427A5E1)]
public class ChannelParticipantsBanned : ChannelParticipantsFilter
{
/// Optional filter for searching banned participants by name (otherwise empty)
public string q;
}
/// Query participants by name See
[TLDef(0x0656AC4B)]
public class ChannelParticipantsSearch : ChannelParticipantsFilter
{
/// Search query
public string q;
}
/// Fetch only participants that are also contacts See
[TLDef(0xBB6AE88D)]
public class ChannelParticipantsContacts : ChannelParticipantsFilter
{
/// Optional search query for searching contact participants by name
public string q;
}
/// This filter is used when looking for supergroup members to mention.
This filter will automatically remove anonymous admins, and return even non-participant users that replied to a specific thread through the comment section of a channel. See
[TLDef(0xE04B5CEB)]
public class ChannelParticipantsMentions : ChannelParticipantsFilter
{
/// Flags, see TL conditional fields
public Flags flags;
/// Filter by user name or username
[IfFlag(0)] public string q;
/// Look only for users that posted in this thread
[IfFlag(1)] public int top_msg_id;
[Flags] public enum Flags
{
/// Field has a value
has_q = 0x1,
/// Field has a value
has_top_msg_id = 0x2,
}
}
/// Represents multiple channel participants See
/// a null value means channels.channelParticipantsNotModified
[TLDef(0x9AB0FEAF)]
public class Channels_ChannelParticipants : IObject, IPeerResolver
{
/// Total number of participants that correspond to the given query
public int count;
/// Participants
public ChannelParticipantBase[] participants;
/// Mentioned chats
public Dictionary chats;
/// Users mentioned in participant info
public Dictionary users;
/// returns a or for the given Peer
public IPeerInfo UserOrChat(Peer peer) => peer.UserOrChat(users, chats);
}
/// Represents a channel participant See
[TLDef(0xDFB80317)]
public class Channels_ChannelParticipant : IObject, IPeerResolver
{
/// The channel participant
public ChannelParticipantBase participant;
/// Mentioned chats
public Dictionary chats;
/// Users
public Dictionary users;
/// returns a or for the given Peer
public IPeerInfo UserOrChat(Peer peer) => peer.UserOrChat(users, chats);
}
/// Info about the latest telegram Terms Of Service See
[TLDef(0x780A0310)]
public class Help_TermsOfService : IObject
{
/// Flags, see TL conditional fields
public Flags flags;
/// ID of the new terms
public DataJSON id;
/// Text of the new terms
public string text;
/// Message entities for styled text
public MessageEntity[] entities;
/// Minimum age required to sign up to telegram, the user must confirm that they is older than the minimum age.
[IfFlag(1)] public int min_age_confirm;
[Flags] public enum Flags
{
/// Whether a prompt must be showed to the user, in order to accept the new terms.
popup = 0x1,
/// Field has a value
has_min_age_confirm = 0x2,
}
}
/// Saved gifs See
/// a null value means messages.savedGifsNotModified
[TLDef(0x84A02A0D)]
public class Messages_SavedGifs : IObject
{
/// Hash for pagination, for more info click here
public long hash;
/// List of saved gifs
public DocumentBase[] gifs;
}
/// Represents a sent inline message from the perspective of a bot Derived classes: , , , , , , See
public abstract class InputBotInlineMessage : IObject
{
/// Flags, see TL conditional fields
public int flags;
}
/// A media See
[TLDef(0x3380C786, inheritBefore = true)]
public class InputBotInlineMessageMediaAuto : InputBotInlineMessage
{
/// Caption
public string message;
/// Message entities for styled text
[IfFlag(1)] public MessageEntity[] entities;
/// Inline keyboard
[IfFlag(2)] public ReplyMarkup reply_markup;
[Flags] public enum Flags
{
/// Field has a value
has_entities = 0x2,
/// Field has a value
has_reply_markup = 0x4,
}
}
/// Simple text message See
[TLDef(0x3DCD7A87, inheritBefore = true)]
public class InputBotInlineMessageText : InputBotInlineMessage
{
/// Message
public string message;
/// Message entities for styled text
[IfFlag(1)] public MessageEntity[] entities;
/// Inline keyboard
[IfFlag(2)] public ReplyMarkup reply_markup;
[Flags] public enum Flags
{
/// Disable webpage preview
no_webpage = 0x1,
/// Field has a value
has_entities = 0x2,
/// Field has a value
has_reply_markup = 0x4,
}
}
/// Geolocation See
[TLDef(0x96929A85, inheritBefore = true)]
public class InputBotInlineMessageMediaGeo : InputBotInlineMessage
{
/// Geolocation
public InputGeoPoint geo_point;
/// For live locations, a direction in which the location moves, in degrees; 1-360
[IfFlag(0)] public int heading;
/// Validity period
[IfFlag(1)] public int period;
/// For live locations, a maximum distance to another chat member for proximity alerts, in meters (0-100000)
[IfFlag(3)] public int proximity_notification_radius;
/// Reply markup for bot/inline keyboards
[IfFlag(2)] public ReplyMarkup reply_markup;
[Flags] public enum Flags
{
/// Field has a value
has_heading = 0x1,
/// Field has a value
has_period = 0x2,
/// Field has a value
has_reply_markup = 0x4,
/// Field has a value
has_proximity_notification_radius = 0x8,
}
}
/// Venue See
[TLDef(0x417BBF11, inheritBefore = true)]
public class InputBotInlineMessageMediaVenue : InputBotInlineMessage
{
/// Geolocation
public InputGeoPoint geo_point;
/// Venue name
public string title;
/// Address
public string address;
/// Venue provider: currently only "foursquare" needs to be supported
public string provider;
/// Venue ID in the provider's database
public string venue_id;
/// Venue type in the provider's database
public string venue_type;
/// Inline keyboard
[IfFlag(2)] public ReplyMarkup reply_markup;
[Flags] public enum Flags
{
/// Field has a value
has_reply_markup = 0x4,
}
}
/// A contact See
[TLDef(0xA6EDBFFD, inheritBefore = true)]
public class InputBotInlineMessageMediaContact : InputBotInlineMessage
{
/// Phone number
public string phone_number;
/// First name
public string first_name;
/// Last name
public string last_name;
/// VCard info
public string vcard;
/// Inline keyboard
[IfFlag(2)] public ReplyMarkup reply_markup;
[Flags] public enum Flags
{
/// Field has a value
has_reply_markup = 0x4,
}
}
/// A game See
[TLDef(0x4B425864, inheritBefore = true)]
public class InputBotInlineMessageGame : InputBotInlineMessage
{
/// Inline keyboard
[IfFlag(2)] public ReplyMarkup reply_markup;
[Flags] public enum Flags
{
/// Field has a value
has_reply_markup = 0x4,
}
}
/// An invoice See
[TLDef(0xD7E78225, inheritBefore = true)]
public class InputBotInlineMessageMediaInvoice : InputBotInlineMessage
{
/// Product name, 1-32 characters
public string title;
/// Product description, 1-255 characters
public string description;
/// Invoice photo
[IfFlag(0)] public InputWebDocument photo;
/// The invoice
public Invoice invoice;
/// Bot-defined invoice payload, 1-128 bytes. This will not be displayed to the user, use for your internal processes.
public byte[] payload;
/// Payments provider token, obtained via Botfather
public string provider;
/// A JSON-serialized object for data about the invoice, which will be shared with the payment provider. A detailed description of the required fields should be provided by the payment provider.
public DataJSON provider_data;
/// Inline keyboard
[IfFlag(2)] public ReplyMarkup reply_markup;
[Flags] public enum Flags
{
/// Field has a value
has_photo = 0x1,
/// Field has a value
has_reply_markup = 0x4,
}
}
/// Inline bot result Derived classes: , , , See
public abstract class InputBotInlineResultBase : IObject
{
/// ID of result
public abstract string ID { get; }
/// Message to send when the result is selected
public abstract InputBotInlineMessage SendMessage { get; }
}
/// An inline bot result See
[TLDef(0x88BF9319)]
public class InputBotInlineResult : InputBotInlineResultBase
{
/// Flags, see TL conditional fields
public Flags flags;
/// ID of result
public string id;
/// Result type (see bot API docs)
public string type;
/// Result title
[IfFlag(1)] public string title;
/// Result description
[IfFlag(2)] public string description;
/// URL of result
[IfFlag(3)] public string url;
/// Thumbnail for result
[IfFlag(4)] public InputWebDocument thumb;
/// Result contents
[IfFlag(5)] public InputWebDocument content;
/// Message to send when the result is selected
public InputBotInlineMessage send_message;
[Flags] public enum Flags
{
/// Field has a value
has_title = 0x2,
/// Field has a value
has_description = 0x4,
/// Field has a value
has_url = 0x8,
/// Field has a value
has_thumb = 0x10,
/// Field has a value
has_content = 0x20,
}
/// ID of result
public override string ID => id;
/// Message to send when the result is selected
public override InputBotInlineMessage SendMessage => send_message;
}
/// Photo See
[TLDef(0xA8D864A7)]
public class InputBotInlineResultPhoto : InputBotInlineResultBase
{
/// Result ID
public string id;
/// Result type (see bot API docs)
public string type;
/// Photo to send
public InputPhoto photo;
/// Message to send when the result is selected
public InputBotInlineMessage send_message;
/// Result ID
public override string ID => id;
/// Message to send when the result is selected
public override InputBotInlineMessage SendMessage => send_message;
}
/// Document (media of any type except for photos) See
[TLDef(0xFFF8FDC4)]
public class InputBotInlineResultDocument : InputBotInlineResultBase
{
/// Flags, see TL conditional fields
public Flags flags;
/// Result ID
public string id;
/// Result type (see bot API docs)
public string type;
/// Result title
[IfFlag(1)] public string title;
/// Result description
[IfFlag(2)] public string description;
/// Document to send
public InputDocument document;
/// Message to send when the result is selected
public InputBotInlineMessage send_message;
[Flags] public enum Flags
{
/// Field has a value
has_title = 0x2,
/// Field has a value
has_description = 0x4,
}
/// Result ID
public override string ID => id;
/// Message to send when the result is selected
public override InputBotInlineMessage SendMessage => send_message;
}
/// Game See
[TLDef(0x4FA417F2)]
public class InputBotInlineResultGame : InputBotInlineResultBase
{
/// Result ID
public string id;
/// Game short name
public string short_name;
/// Message to send when the result is selected
public InputBotInlineMessage send_message;
/// Result ID
public override string ID => id;
/// Message to send when the result is selected
public override InputBotInlineMessage SendMessage => send_message;
}
/// Inline message Derived classes: , , , , , See
public abstract class BotInlineMessage : IObject
{
/// Flags, see TL conditional fields
public int flags;
}
/// Send whatever media is attached to the See
[TLDef(0x764CF810, inheritBefore = true)]
public class BotInlineMessageMediaAuto : BotInlineMessage
{
/// Caption
public string message;
/// Message entities for styled text
[IfFlag(1)] public MessageEntity[] entities;
/// Inline keyboard
[IfFlag(2)] public ReplyMarkup reply_markup;
[Flags] public enum Flags
{
/// Field has a value
has_entities = 0x2,
/// Field has a value
has_reply_markup = 0x4,
}
}
/// Send a simple text message See
[TLDef(0x8C7F65E2, inheritBefore = true)]
public class BotInlineMessageText : BotInlineMessage
{
/// The message
public string message;
/// Message entities for styled text
[IfFlag(1)] public MessageEntity[] entities;
/// Inline keyboard
[IfFlag(2)] public ReplyMarkup reply_markup;
[Flags] public enum Flags
{
/// Disable webpage preview
no_webpage = 0x1,
/// Field has a value
has_entities = 0x2,
/// Field has a value
has_reply_markup = 0x4,
}
}
/// Send a geolocation See
[TLDef(0x051846FD, inheritBefore = true)]
public class BotInlineMessageMediaGeo : BotInlineMessage
{
/// Geolocation
public GeoPoint geo;
/// For live locations, a direction in which the location moves, in degrees; 1-360.
[IfFlag(0)] public int heading;
/// Validity period
[IfFlag(1)] public int period;
/// For live locations, a maximum distance to another chat member for proximity alerts, in meters (0-100000).
[IfFlag(3)] public int proximity_notification_radius;
/// Inline keyboard
[IfFlag(2)] public ReplyMarkup reply_markup;
[Flags] public enum Flags
{
/// Field has a value
has_heading = 0x1,
/// Field has a value
has_period = 0x2,
/// Field has a value
has_reply_markup = 0x4,
/// Field has a value
has_proximity_notification_radius = 0x8,
}
}
/// Send a venue See
[TLDef(0x8A86659C, inheritBefore = true)]
public class BotInlineMessageMediaVenue : BotInlineMessage
{
/// Geolocation of venue
public GeoPoint geo;
/// Venue name
public string title;
/// Address
public string address;
/// Venue provider: currently only "foursquare" needs to be supported
public string provider;
/// Venue ID in the provider's database
public string venue_id;
/// Venue type in the provider's database
public string venue_type;
/// Inline keyboard
[IfFlag(2)] public ReplyMarkup reply_markup;
[Flags] public enum Flags
{
/// Field has a value
has_reply_markup = 0x4,
}
}
/// Send a contact See
[TLDef(0x18D1CDC2, inheritBefore = true)]
public class BotInlineMessageMediaContact : BotInlineMessage
{
/// Phone number
public string phone_number;
/// First name
public string first_name;
/// Last name
public string last_name;
/// VCard info
public string vcard;
/// Inline keyboard
[IfFlag(2)] public ReplyMarkup reply_markup;
[Flags] public enum Flags
{
/// Field has a value
has_reply_markup = 0x4,
}
}
/// Send an invoice See
[TLDef(0x354A9B09, inheritBefore = true)]
public class BotInlineMessageMediaInvoice : BotInlineMessage
{
/// Product name, 1-32 characters
public string title;
/// Product description, 1-255 characters
public string description;
/// Product photo
[IfFlag(0)] public WebDocumentBase photo;
/// Three-letter ISO 4217 currency code
public string currency;
/// Total price in the smallest units of the currency (integer, not float/double). For example, for a price of US$ 1.45 pass amount = 145. See the exp parameter in currencies.json, it shows the number of digits past the decimal point for each currency (2 for the majority of currencies).
public long total_amount;
/// Inline keyboard
[IfFlag(2)] public ReplyMarkup reply_markup;
[Flags] public enum Flags
{
/// Field has a value
has_photo = 0x1,
/// Set this flag if you require the user's shipping address to complete the order
shipping_address_requested = 0x2,
/// Field has a value
has_reply_markup = 0x4,
/// Test invoice
test = 0x8,
}
}
/// Results of an inline query Derived classes: , See
public abstract class BotInlineResultBase : IObject
{
/// Result ID
public abstract string ID { get; }
/// Result type (see bot API docs)
public abstract string Type { get; }
/// Result title
public abstract string Title { get; }
/// Result description
public abstract string Description { get; }
/// Message to send
public abstract BotInlineMessage SendMessage { get; }
}
/// Generic result See
[TLDef(0x11965F3A)]
public class BotInlineResult : BotInlineResultBase
{
/// Flags, see TL conditional fields
public Flags flags;
/// Result ID
public string id;
/// Result type (see bot API docs)
public string type;
/// Result title
[IfFlag(1)] public string title;
/// Result description
[IfFlag(2)] public string description;
/// URL of article or webpage
[IfFlag(3)] public string url;
/// Thumbnail for the result
[IfFlag(4)] public WebDocumentBase thumb;
/// Content of the result
[IfFlag(5)] public WebDocumentBase content;
/// Message to send
public BotInlineMessage send_message;
[Flags] public enum Flags
{
/// Field has a value
has_title = 0x2,
/// Field has a value
has_description = 0x4,
/// Field has a value
has_url = 0x8,
/// Field has a value
has_thumb = 0x10,
/// Field has a value
has_content = 0x20,
}
/// Result ID
public override string ID => id;
/// Result type (see bot API docs)
public override string Type => type;
/// Result title
public override string Title => title;
/// Result description
public override string Description => description;
/// Message to send
public override BotInlineMessage SendMessage => send_message;
}
/// Media result See
[TLDef(0x17DB940B)]
public class BotInlineMediaResult : BotInlineResultBase
{
/// Flags, see TL conditional fields
public Flags flags;
/// Result ID
public string id;
/// Result type (see bot API docs)
public string type;
/// If type is photo, the photo to send
[IfFlag(0)] public PhotoBase photo;
/// If type is document, the document to send
[IfFlag(1)] public DocumentBase document;
/// Result title
[IfFlag(2)] public string title;
/// Description
[IfFlag(3)] public string description;
/// Depending on the type and on the , contains the caption of the media or the content of the message to be sent instead of the media
public BotInlineMessage send_message;
[Flags] public enum Flags
{
/// Field has a value
has_photo = 0x1,
/// Field has a value
has_document = 0x2,
/// Field has a value
has_title = 0x4,
/// Field has a value
has_description = 0x8,
}
/// Result ID
public override string ID => id;
/// Result type (see bot API docs)
public override string Type => type;
/// Result title
public override string Title => title;
/// Description
public override string Description => description;
/// Depending on the type and on the , contains the caption of the media or the content of the message to be sent instead of the media
public override BotInlineMessage SendMessage => send_message;
}
/// Result of a query to an inline bot See
[TLDef(0x947CA848)]
public class Messages_BotResults : IObject
{
/// Flags, see TL conditional fields
public Flags flags;
/// Query ID
public long query_id;
/// The next offset to use when navigating through results
[IfFlag(1)] public string next_offset;
/// Whether the bot requested the user to message him in private
[IfFlag(2)] public InlineBotSwitchPM switch_pm;
/// The results
public BotInlineResultBase[] results;
/// Caching validity of the results
public DateTime cache_time;
/// Users mentioned in the results
public Dictionary users;
[Flags] public enum Flags
{
/// Whether the result is a picture gallery
gallery = 0x1,
/// Field has a value
has_next_offset = 0x2,
/// Field has a value
has_switch_pm = 0x4,
}
}
/// Link to a message in a supergroup/channel See
[TLDef(0x5DAB1AF4)]
public class ExportedMessageLink : IObject
{
/// URL
public string link;
/// Embed code
public string html;
}
/// Info about a forwarded message See
[TLDef(0x5F777DCE)]
public class MessageFwdHeader : IObject
{
/// Flags, see TL conditional fields
public Flags flags;
/// The ID of the user that originally sent the message
[IfFlag(0)] public Peer from_id;
/// The name of the user that originally sent the message
[IfFlag(5)] public string from_name;
/// When was the message originally sent
public DateTime date;
/// ID of the channel message that was forwarded
[IfFlag(2)] public int channel_post;
/// For channels and if signatures are enabled, author of the channel message
[IfFlag(3)] public string post_author;
/// Only for messages forwarded to the current user (inputPeerSelf), full info about the user/channel that originally sent the message
[IfFlag(4)] public Peer saved_from_peer;
/// Only for messages forwarded to the current user (inputPeerSelf), ID of the message that was forwarded from the original user/channel
[IfFlag(4)] public int saved_from_msg_id;
/// PSA type
[IfFlag(6)] public string psa_type;
[Flags] public enum Flags
{
/// Field has a value
has_from_id = 0x1,
/// Field has a value
has_channel_post = 0x4,
/// Field has a value
has_post_author = 0x8,
/// Field has a value
has_saved_from_peer = 0x10,
/// Field has a value
has_from_name = 0x20,
/// Field has a value
has_psa_type = 0x40,
/// Whether this message was imported from a foreign chat service, click here for more info »
imported = 0x80,
}
}
/// Type of verification code that will be sent next if you call the resendCode method See
public enum Auth_CodeType : uint
{
///Type of verification code that will be sent next if you call the resendCode method: SMS code
Sms = 0x72A3158C,
///Type of verification code that will be sent next if you call the resendCode method: SMS code
Call = 0x741CD3E3,
///Type of verification code that will be sent next if you call the resendCode method: SMS code
FlashCall = 0x226CCEFB,
///See
MissedCall = 0xD61AD6EE,
}
/// Type of the verification code that was sent Derived classes: , , , See
public abstract class Auth_SentCodeType : IObject { }
/// The code was sent through the telegram app See
[TLDef(0x3DBB5986)]
public class Auth_SentCodeTypeApp : Auth_SentCodeType
{
/// Length of the code in bytes
public int length;
}
/// The code was sent via SMS See
[TLDef(0xC000BBA2)]
public class Auth_SentCodeTypeSms : Auth_SentCodeType
{
/// Length of the code in bytes
public int length;
}
/// The code will be sent via a phone call: a synthesized voice will tell the user which verification code to input. See
[TLDef(0x5353E5A7)]
public class Auth_SentCodeTypeCall : Auth_SentCodeType
{
/// Length of the verification code
public int length;
}
/// The code will be sent via a flash phone call, that will be closed immediately. The phone code will then be the phone number itself, just make sure that the phone number matches the specified pattern. See
[TLDef(0xAB03C6D9)]
public class Auth_SentCodeTypeFlashCall : Auth_SentCodeType
{
/// pattern to match
public string pattern;
}
/// See
[TLDef(0x82006484)]
public class Auth_SentCodeTypeMissedCall : Auth_SentCodeTypeCall
{
public string prefix;
}
/// Callback answer sent by the bot in response to a button press See
[TLDef(0x36585EA4)]
public class Messages_BotCallbackAnswer : IObject
{
/// Flags, see TL conditional fields
public Flags flags;
/// Alert to show
[IfFlag(0)] public string message;
/// URL to open
[IfFlag(2)] public string url;
/// For how long should this answer be cached
public DateTime cache_time;
[Flags] public enum Flags
{
/// Field has a value
has_message = 0x1,
/// Whether an alert should be shown to the user instead of a toast notification
alert = 0x2,
/// Field has a value
has_url_field = 0x4,
/// Whether an URL is present
has_url = 0x8,
/// Whether to show games in WebView or in native UI.
native_ui = 0x10,
}
}
/// Message edit data for media See
[TLDef(0x26B5DDE6)]
public class Messages_MessageEditData : IObject
{
/// Flags, see TL conditional fields
public Flags flags;
[Flags] public enum Flags
{
/// Media caption, if the specified media's caption can be edited
caption = 0x1,
}
}
/// Represents a sent inline message from the perspective of a bot Derived classes: , See
public abstract class InputBotInlineMessageIDBase : IObject
{
/// DC ID to use when working with this inline message
public abstract int DcId { get; }
/// Access hash of message
public abstract long AccessHash { get; }
}
/// Represents a sent inline message from the perspective of a bot (legacy constructor) See
[TLDef(0x890C3D89)]
public class InputBotInlineMessageID : InputBotInlineMessageIDBase
{
/// DC ID to use when working with this inline message
public int dc_id;
/// ID of message, contains both the (32-bit, legacy) owner ID and the message ID, used only for Bot API backwards compatibility with 32-bit user ID.
public long id;
/// ⚠ REQUIRED FIELD. See how to obtain it
Access hash of message
public long access_hash;
/// DC ID to use when working with this inline message
public override int DcId => dc_id;
/// Access hash of message
public override long AccessHash => access_hash;
}
/// Represents a sent inline message from the perspective of a bot See
[TLDef(0xB6D915D7)]
public class InputBotInlineMessageID64 : InputBotInlineMessageIDBase
{
/// DC ID to use when working with this inline message
public int dc_id;
/// ID of the owner of this message
public long owner_id;
/// ID of message
public int id;
/// ⚠ REQUIRED FIELD. See how to obtain it
Access hash of message
public long access_hash;
/// DC ID to use when working with this inline message
public override int DcId => dc_id;
/// Access hash of message
public override long AccessHash => access_hash;
}
/// The bot requested the user to message him in private See
[TLDef(0x3C20629F)]
public class InlineBotSwitchPM : IObject
{
/// Text for the button that switches the user to a private chat with the bot and sends the bot a start message with the parameter start_parameter (can be empty)
public string text;
/// The parameter for the /start parameter
public string start_param;
}
/// Dialog info of multiple peers See
[TLDef(0x3371C354)]
public partial class Messages_PeerDialogs : IObject, IPeerResolver
{
/// Dialog info
public DialogBase[] dialogs;
/// Messages mentioned in dialog info
public MessageBase[] messages;
/// Chats
public Dictionary chats;
/// Users
public Dictionary users;
/// Current update state of dialog
public Updates_State state;
/// returns a or for the given Peer
public IPeerInfo UserOrChat(Peer peer) => peer.UserOrChat(users, chats);
}
/// Top peer See
[TLDef(0xEDCDC05B)]
public class TopPeer : IObject
{
/// Peer
public Peer peer;
/// Rating as computed in top peer rating »
public double rating;
}
/// Top peer category See
public enum TopPeerCategory : uint
{
///Most used bots
BotsPM = 0xAB661B5B,
///Most used inline bots
BotsInline = 0x148677E2,
///Users we've chatted most frequently with
Correspondents = 0x0637B7ED,
///Often-opened groups and supergroups
Groups = 0xBD17A14A,
///Most frequently visited channels
Channels = 0x161D9628,
///Most frequently called users
PhoneCalls = 0x1E76A78C,
///Users to which the users often forwards messages to
ForwardUsers = 0xA8406CA9,
///Chats to which the users often forwards messages to
ForwardChats = 0xFBEEC0F0,
}
/// Top peer category See
[TLDef(0xFB834291)]
public class TopPeerCategoryPeers : IObject
{
/// Top peer category of peers
public TopPeerCategory category;
/// Count of peers
public int count;
/// Peers
public TopPeer[] peers;
}
/// Top peers Derived classes: , See
/// a null value means contacts.topPeersNotModified
public abstract class Contacts_TopPeersBase : IObject { }
/// Top peers See
[TLDef(0x70B772A8)]
public class Contacts_TopPeers : Contacts_TopPeersBase, IPeerResolver
{
/// Top peers by top peer category
public TopPeerCategoryPeers[] categories;
/// Chats
public Dictionary chats;
/// Users
public Dictionary users;
/// returns a or for the given Peer
public IPeerInfo UserOrChat(Peer peer) => peer.UserOrChat(users, chats);
}
/// Top peers disabled See
[TLDef(0xB52C939D)]
public class Contacts_TopPeersDisabled : Contacts_TopPeersBase { }
/// Represents a message draft. Derived classes: , See
public abstract class DraftMessageBase : IObject { }
/// Empty draft See
[TLDef(0x1B0C841A)]
public class DraftMessageEmpty : DraftMessageBase
{
/// Flags, see TL conditional fields
public Flags flags;
/// When was the draft last updated
[IfFlag(0)] public DateTime date;
[Flags] public enum Flags
{
/// Field has a value
has_date = 0x1,
}
}
/// Represents a message draft. See
[TLDef(0xFD8E711F)]
public class DraftMessage : DraftMessageBase
{
/// Flags, see TL conditional fields
public Flags flags;
/// The message this message will reply to
[IfFlag(0)] public int reply_to_msg_id;
/// The draft
public string message;
/// Message entities for styled text.
[IfFlag(3)] public MessageEntity[] entities;
/// Date of last update of the draft.
public DateTime date;
[Flags] public enum Flags
{
/// Field has a value
has_reply_to_msg_id = 0x1,
/// Whether no webpage preview will be generated
no_webpage = 0x2,
/// Field has a value
has_entities = 0x8,
}
}
/// Featured stickers Derived classes: , See
public abstract class Messages_FeaturedStickersBase : IObject { }
/// Featured stickers haven't changed See
[TLDef(0xC6DC0C66)]
public class Messages_FeaturedStickersNotModified : Messages_FeaturedStickersBase
{
/// Total number of featured stickers
public int count;
}
/// Featured stickersets See
[TLDef(0x84C02310)]
public class Messages_FeaturedStickers : Messages_FeaturedStickersBase
{
/// Hash for pagination, for more info click here
public long hash;
/// Total number of featured stickers
public int count;
/// Featured stickersets
public StickerSetCoveredBase[] sets;
/// IDs of new featured stickersets
public long[] unread;
}
/// Recently used stickers See
/// a null value means messages.recentStickersNotModified
[TLDef(0x88D37C56)]
public class Messages_RecentStickers : IObject
{
/// Hash for pagination, for more info click here
public long hash;
/// Emojis associated to stickers
public StickerPack[] packs;
/// Recent stickers
public DocumentBase[] stickers;
/// When was each sticker last used
public int[] dates;
}
/// Archived stickersets See
[TLDef(0x4FCBA9C8)]
public class Messages_ArchivedStickers : IObject
{
/// Number of archived stickers
public int count;
/// Archived stickersets
public StickerSetCoveredBase[] sets;
}
/// Result of stickerset installation process Derived classes: , See
public abstract class Messages_StickerSetInstallResult : IObject { }
/// The stickerset was installed successfully See
[TLDef(0x38641628)]
public class Messages_StickerSetInstallResultSuccess : Messages_StickerSetInstallResult { }
/// The stickerset was installed, but since there are too many stickersets some were archived See
[TLDef(0x35E410A8)]
public class Messages_StickerSetInstallResultArchive : Messages_StickerSetInstallResult
{
/// Archived stickersets
public StickerSetCoveredBase[] sets;
}
/// Stickerset, with a specific sticker as preview Derived classes: , See
public abstract class StickerSetCoveredBase : IObject
{
/// Stickerset
public abstract StickerSet Set { get; }
}
/// Stickerset, with a specific sticker as preview See
[TLDef(0x6410A5D2)]
public class StickerSetCovered : StickerSetCoveredBase
{
/// Stickerset
public StickerSet set;
/// Preview
public DocumentBase cover;
/// Stickerset
public override StickerSet Set => set;
}
/// Stickerset, with a specific stickers as preview See
[TLDef(0x3407E51B)]
public class StickerSetMultiCovered : StickerSetCoveredBase
{
/// Stickerset
public StickerSet set;
/// Preview stickers
public DocumentBase[] covers;
/// Stickerset
public override StickerSet Set => set;
}
/// Position on a photo where a mask should be placed See
[TLDef(0xAED6DBB2)]
public class MaskCoords : IObject
{
/// Part of the face, relative to which the mask should be placed
public int n;
/// Shift by X-axis measured in widths of the mask scaled to the face size, from left to right. (For example, -1.0 will place the mask just to the left of the default mask position)
public double x;
/// Shift by Y-axis measured in widths of the mask scaled to the face size, from left to right. (For example, -1.0 will place the mask just to the left of the default mask position)
public double y;
/// Mask scaling coefficient. (For example, 2.0 means a doubled size)
public double zoom;
}
/// Represents a media with attached stickers Derived classes: , See
public abstract class InputStickeredMedia : IObject { }
/// A photo with stickers attached See
[TLDef(0x4A992157)]
public class InputStickeredMediaPhoto : InputStickeredMedia
{
/// The photo
public InputPhoto id;
}
/// A document with stickers attached See
[TLDef(0x0438865B)]
public class InputStickeredMediaDocument : InputStickeredMedia
{
/// The document
public InputDocument id;
}
/// Indicates an already sent game See
[TLDef(0xBDF9653B)]
public class Game : IObject
{
/// Flags, see TL conditional fields
public Flags flags;
/// ID of the game
public long id;
/// Access hash of the game
public long access_hash;
/// Short name for the game
public string short_name;
/// Title of the game
public string title;
/// Game description
public string description;
/// Game preview
public PhotoBase photo;
/// Optional attached document
[IfFlag(0)] public DocumentBase document;
[Flags] public enum Flags
{
/// Field has a value
has_document = 0x1,
}
}
/// A game to send Derived classes: , See
public abstract class InputGame : IObject { }
/// Indicates an already sent game See
[TLDef(0x032C3E77)]
public class InputGameID : InputGame
{
/// game ID from constructor
public long id;
/// ⚠ REQUIRED FIELD. See how to obtain it
access hash from constructor
public long access_hash;
}
/// Game by short name See
[TLDef(0xC331E80A)]
public class InputGameShortName : InputGame
{
/// The bot that provides the game
public InputUserBase bot_id;
/// The game's short name
public string short_name;
}
/// Game highscore See
[TLDef(0x73A379EB)]
public class HighScore : IObject
{
/// Position in highscore list
public int pos;
/// User ID
public long user_id;
/// Score
public int score;
}
/// Highscores in a game See
[TLDef(0x9A3BFD99)]
public class Messages_HighScores : IObject
{
/// Highscores
public HighScore[] scores;
/// Users, associated to the highscores
public Dictionary users;
}
/// Rich text Derived classes: , , , , , , , , , , , , , , See
/// a null value means textEmpty
public abstract class RichText : IObject { }
/// Plain text See
[TLDef(0x744694E0)]
public class TextPlain : RichText
{
/// Text
public string text;
}
/// Bold text See
[TLDef(0x6724ABC4)]
public class TextBold : RichText
{
/// Text
public RichText text;
}
/// Italic text See
[TLDef(0xD912A59C)]
public class TextItalic : RichText
{
/// Text
public RichText text;
}
/// Underlined text See
[TLDef(0xC12622C4)]
public class TextUnderline : RichText
{
/// Text
public RichText text;
}
/// Strikethrough text See
[TLDef(0x9BF8BB95)]
public class TextStrike : RichText
{
/// Text
public RichText text;
}
/// fixed-width rich text See
[TLDef(0x6C3F19B9)]
public class TextFixed : RichText
{
/// Text
public RichText text;
}
/// Link See
[TLDef(0x3C2884C1)]
public class TextUrl : RichText
{
/// Text of link
public RichText text;
/// Webpage HTTP URL
public string url;
/// If a preview was already generated for the page, the page ID
public long webpage_id;
}
/// Rich text email link See
[TLDef(0xDE5A0DD6)]
public class TextEmail : RichText
{
/// Link text
public RichText text;
/// Email address
public string email;
}
/// Concatenation of rich texts See
[TLDef(0x7E6260D7)]
public class TextConcat : RichText
{
/// Concatenated rich texts
public RichText[] texts;
}
/// Subscript text See
[TLDef(0xED6A8504)]
public class TextSubscript : RichText
{
/// Text
public RichText text;
}
/// Superscript text See
[TLDef(0xC7FB5E01)]
public class TextSuperscript : RichText
{
/// Text
public RichText text;
}
/// Highlighted text See
[TLDef(0x034B8621)]
public class TextMarked : RichText
{
/// Text
public RichText text;
}
/// Rich text linked to a phone number See
[TLDef(0x1CCB966A)]
public class TextPhone : RichText
{
/// Text
public RichText text;
/// Phone number
public string phone;
}
/// Inline image See
[TLDef(0x081CCF4F)]
public class TextImage : RichText
{
/// Document ID
public long document_id;
/// Width
public int w;
/// Height
public int h;
}
/// Text linking to another section of the page See
[TLDef(0x35553762)]
public class TextAnchor : RichText
{
/// Text
public RichText text;
/// Section name
public string name;
}
/// Represents an instant view page element Derived classes: , , , , , , , , , , , , , , , , , , , , , , , , , , , , See
public abstract class PageBlock : IObject { }
/// Unsupported IV element See
[TLDef(0x13567E8A)]
public class PageBlockUnsupported : PageBlock { }
/// Title See
[TLDef(0x70ABC3FD)]
public class PageBlockTitle : PageBlock
{
/// Title
public RichText text;
}
/// Subtitle See
[TLDef(0x8FFA9A1F)]
public class PageBlockSubtitle : PageBlock
{
/// Text
public RichText text;
}
/// Author and date of creation of article See
[TLDef(0xBAAFE5E0)]
public class PageBlockAuthorDate : PageBlock
{
/// Author name
public RichText author;
/// Date of pubblication
public DateTime published_date;
}
/// Page header See
[TLDef(0xBFD064EC)]
public class PageBlockHeader : PageBlock
{
/// Contents
public RichText text;
}
/// Subheader See
[TLDef(0xF12BB6E1)]
public class PageBlockSubheader : PageBlock
{
/// Subheader
public RichText text;
}
/// A paragraph See
[TLDef(0x467A0766)]
public class PageBlockParagraph : PageBlock
{
/// Text
public RichText text;
}
/// Preformatted (<pre> text) See
[TLDef(0xC070D93E)]
public class PageBlockPreformatted : PageBlock
{
/// Text
public RichText text;
/// Programming language of preformatted text
public string language;
}
/// Page footer See
[TLDef(0x48870999)]
public class PageBlockFooter : PageBlock
{
/// Contents
public RichText text;
}
/// An empty block separating a page See
[TLDef(0xDB20B188)]
public class PageBlockDivider : PageBlock { }
/// Link to section within the page itself (like <a href="#target">anchor</a>) See
[TLDef(0xCE0D37B0)]
public class PageBlockAnchor : PageBlock
{
/// Name of target section
public string name;
}
/// Unordered list of IV blocks See
[TLDef(0xE4E88011)]
public class PageBlockList : PageBlock
{
/// List of blocks in an IV page
public PageListItem[] items;
}
/// Quote (equivalent to the HTML <blockquote>) See
[TLDef(0x263D7C26)]
public class PageBlockBlockquote : PageBlock
{
/// Quote contents
public RichText text;
/// Caption
public RichText caption;
}
/// Pullquote See
[TLDef(0x4F4456D3)]
public class PageBlockPullquote : PageBlock
{
/// Text
public RichText text;
/// Caption
public RichText caption;
}
/// A photo See
[TLDef(0x1759C560)]
public class PageBlockPhoto : PageBlock
{
/// Flags, see TL conditional fields
public Flags flags;
/// Photo ID
public long photo_id;
/// Caption
public PageCaption caption;
/// HTTP URL of page the photo leads to when clicked
[IfFlag(0)] public string url;
/// ID of preview of the page the photo leads to when clicked
[IfFlag(0)] public long webpage_id;
[Flags] public enum Flags
{
/// Field has a value
has_url = 0x1,
}
}
/// Video See
[TLDef(0x7C8FE7B6)]
public class PageBlockVideo : PageBlock
{
/// Flags, see TL conditional fields
public Flags flags;
/// Video ID
public long video_id;
/// Caption
public PageCaption caption;
[Flags] public enum Flags
{
/// Whether the video is set to autoplay
autoplay = 0x1,
/// Whether the video is set to loop
loop = 0x2,
}
}
/// A page cover See
[TLDef(0x39F23300)]
public class PageBlockCover : PageBlock
{
/// Cover
public PageBlock cover;
}
/// An embedded webpage See
[TLDef(0xA8718DC5)]
public class PageBlockEmbed : PageBlock
{
/// Flags, see TL conditional fields
public Flags flags;
/// Web page URL, if available
[IfFlag(1)] public string url;
/// HTML-markup of the embedded page
[IfFlag(2)] public string html;
/// Poster photo, if available
[IfFlag(4)] public long poster_photo_id;
/// Block width, if known
[IfFlag(5)] public int w;
/// Block height, if known
[IfFlag(5)] public int h;
/// Caption
public PageCaption caption;
[Flags] public enum Flags
{
/// Whether the block should be full width
full_width = 0x1,
/// Field has a value
has_url = 0x2,
/// Field has a value
has_html = 0x4,
/// Whether scrolling should be allowed
allow_scrolling = 0x8,
/// Field has a value
has_poster_photo_id = 0x10,
/// Field has a value
has_w = 0x20,
}
}
/// An embedded post See
[TLDef(0xF259A80B)]
public class PageBlockEmbedPost : PageBlock
{
/// Web page URL
public string url;
/// ID of generated webpage preview
public long webpage_id;
/// ID of the author's photo
public long author_photo_id;
/// Author name
public string author;
/// Creation date
public DateTime date;
/// Post contents
public PageBlock[] blocks;
/// Caption
public PageCaption caption;
}
/// Collage of media See
[TLDef(0x65A0FA4D)]
public class PageBlockCollage : PageBlock
{
/// Media elements
public PageBlock[] items;
/// Caption
public PageCaption caption;
}
/// Slideshow See
[TLDef(0x031F9590)]
public class PageBlockSlideshow : PageBlock
{
/// Slideshow items
public PageBlock[] items;
/// Caption
public PageCaption caption;
}
/// Reference to a telegram channel See
[TLDef(0xEF1751B5)]
public class PageBlockChannel : PageBlock
{
/// The channel/supergroup/chat
public ChatBase channel;
}
/// Audio See
[TLDef(0x804361EA)]
public class PageBlockAudio : PageBlock
{
/// Audio ID (to be fetched from the container constructor
public long audio_id;
/// Audio caption
public PageCaption caption;
}
/// Kicker See
[TLDef(0x1E148390)]
public class PageBlockKicker : PageBlock
{
/// Contents
public RichText text;
}
/// Table See
[TLDef(0xBF4DEA82)]
public class PageBlockTable : PageBlock
{
/// Flags, see TL conditional fields
public Flags flags;
/// Title
public RichText title;
/// Table rows
public PageTableRow[] rows;
[Flags] public enum Flags
{
/// Does the table have a visible border?
bordered = 0x1,
/// Is the table striped?
striped = 0x2,
}
}
/// Ordered list of IV blocks See
[TLDef(0x9A8AE1E1)]
public class PageBlockOrderedList : PageBlock
{
/// List items
public PageListOrderedItem[] items;
}
/// A collapsible details block See
[TLDef(0x76768BED)]
public class PageBlockDetails : PageBlock
{
/// Flags, see TL conditional fields
public Flags flags;
/// Block contents
public PageBlock[] blocks;
/// Always visible heading for the block
public RichText title;
[Flags] public enum Flags
{
/// Whether the block is open by default
open = 0x1,
}
}
/// Related articles See
[TLDef(0x16115A96)]
public class PageBlockRelatedArticles : PageBlock
{
/// Title
public RichText title;
/// Related articles
public PageRelatedArticle[] articles;
}
/// A map See
[TLDef(0xA44F3EF6)]
public class PageBlockMap : PageBlock
{
/// Location of the map center
public GeoPoint geo;
/// Map zoom level; 13-20
public int zoom;
/// Map width in pixels before applying scale; 16-102
public int w;
/// Map height in pixels before applying scale; 16-1024
public int h;
/// Caption
public PageCaption caption;
}
/// Why was the phone call discarded? See
public enum PhoneCallDiscardReason : uint
{
///The phone call was missed
Missed = 0x85E42301,
///The phone call was disconnected
Disconnect = 0xE095C1A0,
///The phone call was ended normally
Hangup = 0x57ADC690,
///The phone call was discared because the user is busy in another call
Busy = 0xFAF7E8C9,
}
/// Represents a json-encoded object See
[TLDef(0x7D748D04)]
public class DataJSON : IObject
{
/// JSON-encoded object
public string data;
}
/// This object represents a portion of the price for goods or services. See
[TLDef(0xCB296BF8)]
public class LabeledPrice : IObject
{
/// Portion label
public string label;
/// Price of the product in the smallest units of the currency (integer, not float/double). For example, for a price of US$ 1.45 pass amount = 145. See the exp parameter in currencies.json, it shows the number of digits past the decimal point for each currency (2 for the majority of currencies).
public long amount;
}
/// Invoice See
[TLDef(0x0CD886E0)]
public class Invoice : IObject
{
/// Flags, see TL conditional fields
public Flags flags;
/// Three-letter ISO 4217 currency code
public string currency;
/// Price breakdown, a list of components (e.g. product price, tax, discount, delivery cost, delivery tax, bonus, etc.)
public LabeledPrice[] prices;
/// The maximum accepted amount for tips in the smallest units of the currency (integer, not float/double). For example, for a price of US$ 1.45 pass amount = 145. See the exp parameter in currencies.json, it shows the number of digits past the decimal point for each currency (2 for the majority of currencies).
[IfFlag(8)] public long max_tip_amount;
/// A vector of suggested amounts of tips in the smallest units 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 max_tip_amount.
[IfFlag(8)] public long[] suggested_tip_amounts;
[Flags] public enum Flags
{
/// Test invoice
test = 0x1,
/// Set this flag if you require the user's full name to complete the order
name_requested = 0x2,
/// Set this flag if you require the user's phone number to complete the order
phone_requested = 0x4,
/// Set this flag if you require the user's email address to complete the order
email_requested = 0x8,
/// Set this flag if you require the user's shipping address to complete the order
shipping_address_requested = 0x10,
/// Set this flag if the final price depends on the shipping method
flexible = 0x20,
/// Set this flag if user's phone number should be sent to provider
phone_to_provider = 0x40,
/// Set this flag if user's email address should be sent to provider
email_to_provider = 0x80,
/// Field has a value
has_max_tip_amount = 0x100,
}
}
/// Payment identifier See
[TLDef(0xEA02C27E)]
public class PaymentCharge : IObject
{
/// Telegram payment identifier
public string id;
/// Provider payment identifier
public string provider_charge_id;
}
/// Shipping address See
[TLDef(0x1E8CAAEB)]
public class PostAddress : IObject
{
/// First line for the address
public string street_line1;
/// Second line for the address
public string street_line2;
/// City
public string city;
/// State, if applicable (empty otherwise)
public string state;
/// ISO 3166-1 alpha-2 country code
public string country_iso2;
/// Address post code
public string post_code;
}
/// Order info provided by the user See
[TLDef(0x909C3F94)]
public class PaymentRequestedInfo : IObject
{
/// Flags, see TL conditional fields
public Flags flags;
/// User's full name
[IfFlag(0)] public string name;
/// User's phone number
[IfFlag(1)] public string phone;
/// User's email address
[IfFlag(2)] public string email;
/// User's shipping address
[IfFlag(3)] public PostAddress shipping_address;
[Flags] public enum Flags
{
/// Field has a value
has_name = 0x1,
/// Field has a value
has_phone = 0x2,
/// Field has a value
has_email = 0x4,
/// Field has a value
has_shipping_address = 0x8,
}
}
/// Saved payment credentials Derived classes: See
public abstract class PaymentSavedCredentials : IObject { }
/// Saved credit card See
[TLDef(0xCDC27A1F)]
public class PaymentSavedCredentialsCard : PaymentSavedCredentials
{
/// Card ID
public string id;
/// Title
public string title;
}
/// Remote document Derived classes: , See
public abstract class WebDocumentBase : IObject
{
/// Document URL
public abstract string Url { get; }
/// File size
public abstract int Size { get; }
/// MIME type
public abstract string MimeType { get; }
/// Attributes for media types
public abstract DocumentAttribute[] Attributes { get; }
}
/// Remote document See
[TLDef(0x1C570ED1)]
public class WebDocument : WebDocumentBase
{
/// Document URL
public string url;
/// Access hash
public long access_hash;
/// File size
public int size;
/// MIME type
public string mime_type;
/// Attributes for media types
public DocumentAttribute[] attributes;
/// Document URL
public override string Url => url;
/// File size
public override int Size => size;
/// MIME type
public override string MimeType => mime_type;
/// Attributes for media types
public override DocumentAttribute[] Attributes => attributes;
}
/// Remote document that can be downloaded without proxying through telegram See
[TLDef(0xF9C8BCC6)]
public class WebDocumentNoProxy : WebDocumentBase
{
/// Document URL
public string url;
/// File size
public int size;
/// MIME type
public string mime_type;
/// Attributes for media types
public DocumentAttribute[] attributes;
/// Document URL
public override string Url => url;
/// File size
public override int Size => size;
/// MIME type
public override string MimeType => mime_type;
/// Attributes for media types
public override DocumentAttribute[] Attributes => attributes;
}
/// The document See
[TLDef(0x9BED434D)]
public class InputWebDocument : IObject
{
/// Remote document URL to be downloaded using the appropriate method
public string url;
/// Remote file size
public int size;
/// Mime type
public string mime_type;
/// Attributes for media types
public DocumentAttribute[] attributes;
}
/// Location of remote file Derived classes: , See
public abstract class InputWebFileLocationBase : IObject
{
/// Access hash
public abstract long AccessHash { get; }
}
/// Location of a remote HTTP(s) file See
[TLDef(0xC239D686)]
public class InputWebFileLocation : InputWebFileLocationBase
{
/// HTTP URL of file
public string url;
/// ⚠ REQUIRED FIELD. See how to obtain it
Access hash
public long access_hash;
/// Access hash
public override long AccessHash => access_hash;
}
/// Geolocation See
[TLDef(0x9F2221C9)]
public class InputWebFileGeoPointLocation : InputWebFileLocationBase
{
/// Geolocation
public InputGeoPoint geo_point;
/// ⚠ REQUIRED FIELD. See how to obtain it
Access hash
public long access_hash;
/// Map width in pixels before applying scale; 16-1024
public int w;
/// Map height in pixels before applying scale; 16-1024
public int h;
/// Map zoom level; 13-20
public int zoom;
/// Map scale; 1-3
public int scale;
/// Access hash
public override long AccessHash => access_hash;
}
/// Represents a chunk of an HTTP webfile downloaded through telegram's secure MTProto servers See
[TLDef(0x21E753BC)]
public class Upload_WebFile : IObject
{
/// File size
public int size;
/// Mime type
public string mime_type;
/// File type
public Storage_FileType file_type;
/// Modified time
public int mtime;
/// Data
public byte[] bytes;
}
/// Payment form See
[TLDef(0x1694761B)]
public class Payments_PaymentForm : IObject
{
/// Flags, see TL conditional fields
public Flags flags;
/// Form ID
public long form_id;
/// Bot ID
public long bot_id;
/// Invoice
public Invoice invoice;
/// Payment provider ID.
public long provider_id;
/// Payment form URL
public string url;
/// Payment provider name.
One of the following:
- stripe
[IfFlag(4)] public string native_provider;
/// Contains information about the payment provider, if available, to support it natively without the need for opening the URL.
A JSON object that can contain the following fields:
- apple_pay_merchant_id: Apple Pay merchant ID
- google_pay_public_key: Google Pay public key
- need_country: True, if the user country must be provided,
- need_zip: True, if the user ZIP/postal code must be provided,
- need_cardholder_name: True, if the cardholder name must be provided
[IfFlag(4)] public DataJSON native_params;
/// Saved server-side order information
[IfFlag(0)] public PaymentRequestedInfo saved_info;
/// Contains information about saved card credentials
[IfFlag(1)] public PaymentSavedCredentials saved_credentials;
/// Users
public Dictionary users;
[Flags] public enum Flags
{
/// Field has a value
has_saved_info = 0x1,
/// Field has a value
has_saved_credentials = 0x2,
/// Whether the user can choose to save credentials.
can_save_credentials = 0x4,
/// Indicates that the user can save payment credentials, but only after setting up a 2FA password (currently the account doesn't have a 2FA password)
password_missing = 0x8,
/// Field has a value
has_native_provider = 0x10,
}
}
/// Validated user-provided info See
[TLDef(0xD1451883)]
public class Payments_ValidatedRequestedInfo : IObject
{
/// Flags, see TL conditional fields
public Flags flags;
/// ID
[IfFlag(0)] public string id;
/// Shipping options
[IfFlag(1)] public ShippingOption[] shipping_options;
[Flags] public enum Flags
{
/// Field has a value
has_id = 0x1,
/// Field has a value
has_shipping_options = 0x2,
}
}
/// Payment result Derived classes: , See
public abstract class Payments_PaymentResultBase : IObject { }
/// Payment result See
[TLDef(0x4E5F810D)]
public class Payments_PaymentResult : Payments_PaymentResultBase
{
/// Info about the payment
public UpdatesBase updates;
}
/// Payment was not successful, additional verification is needed See
[TLDef(0xD8411139)]
public class Payments_PaymentVerificationNeeded : Payments_PaymentResultBase
{
/// URL for additional payment credentials verification
public string url;
}
/// Receipt See
[TLDef(0x70C4FE03)]
public class Payments_PaymentReceipt : IObject
{
/// Flags, see TL conditional fields
public Flags flags;
/// Date of generation
public DateTime date;
/// Bot ID
public long bot_id;
/// Provider ID
public long provider_id;
/// Title
public string title;
/// Description
public string description;
/// Photo
[IfFlag(2)] public WebDocumentBase photo;
/// Invoice
public Invoice invoice;
/// Info
[IfFlag(0)] public PaymentRequestedInfo info;
/// Selected shipping option
[IfFlag(1)] public ShippingOption shipping;
/// Tipped amount
[IfFlag(3)] public long tip_amount;
/// Three-letter ISO 4217 currency code
public string currency;
/// Total amount in the smallest units of the currency (integer, not float/double). For example, for a price of US$ 1.45 pass amount = 145. See the exp parameter in currencies.json, it shows the number of digits past the decimal point for each currency (2 for the majority of currencies).
public long total_amount;
/// Payment credential name
public string credentials_title;
/// Users
public Dictionary users;
[Flags] public enum Flags
{
/// Field has a value
has_info = 0x1,
/// Field has a value
has_shipping = 0x2,
/// Field has a value
has_photo = 0x4,
/// Field has a value
has_tip_amount = 0x8,
}
}
/// Saved server-side order information See
[TLDef(0xFB8FE43C)]
public class Payments_SavedInfo : IObject
{
/// Flags, see TL conditional fields
public Flags flags;
/// Saved server-side order information
[IfFlag(0)] public PaymentRequestedInfo saved_info;
[Flags] public enum Flags
{
/// Field has a value
has_saved_info = 0x1,
/// Whether the user has some saved payment credentials
has_saved_credentials = 0x2,
}
}
/// Payment credentials Derived classes: , , , See
public abstract class InputPaymentCredentialsBase : IObject { }
/// Saved payment credentials See
[TLDef(0xC10EB2CF)]
public class InputPaymentCredentialsSaved : InputPaymentCredentialsBase
{
/// Credential ID
public string id;
/// Temporary password
public byte[] tmp_password;
}
/// Payment credentials See
[TLDef(0x3417D728)]
public class InputPaymentCredentials : InputPaymentCredentialsBase
{
/// Flags, see TL conditional fields
public Flags flags;
/// Payment credentials
public DataJSON data;
[Flags] public enum Flags
{
/// Save payment credential for future use
save = 0x1,
}
}
/// Apple pay payment credentials See
[TLDef(0x0AA1C39F)]
public class InputPaymentCredentialsApplePay : InputPaymentCredentialsBase
{
/// Payment data
public DataJSON payment_data;
}
/// Google Pay payment credentials See
[TLDef(0x8AC32801)]
public class InputPaymentCredentialsGooglePay : InputPaymentCredentialsBase
{
/// Payment token
public DataJSON payment_token;
}
/// Temporary payment password See
[TLDef(0xDB64FD34)]
public class Account_TmpPassword : IObject
{
/// Temporary password
public byte[] tmp_password;
/// Validity period
public DateTime valid_until;
}
/// Shipping option See
[TLDef(0xB6213CDF)]
public class ShippingOption : IObject
{
/// Option ID
public string id;
/// Title
public string title;
/// List of price portions
public LabeledPrice[] prices;
}
/// Sticker in a stickerset See
[TLDef(0xFFA0A496)]
public class InputStickerSetItem : IObject
{
/// Flags, see TL conditional fields
public Flags flags;
/// The sticker
public InputDocument document;
/// Associated emoji
public string emoji;
/// Coordinates for mask sticker
[IfFlag(0)] public MaskCoords mask_coords;
[Flags] public enum Flags
{
/// Field has a value
has_mask_coords = 0x1,
}
}
/// Phone call See
[TLDef(0x1E36FDED)]
public class InputPhoneCall : IObject
{
/// Call ID
public long id;
/// ⚠ REQUIRED FIELD. See how to obtain it
Access hash
public long access_hash;
}
/// Phone call Derived classes: , , , , , See
public abstract class PhoneCallBase : IObject
{
/// Call ID
public abstract long ID { get; }
}
/// Empty constructor See
[TLDef(0x5366C915)]
public class PhoneCallEmpty : PhoneCallBase
{
/// Call ID
public long id;
/// Call ID
public override long ID => id;
}
/// Incoming phone call See
[TLDef(0xC5226F17)]
public class PhoneCallWaiting : PhoneCallBase
{
/// Flags, see TL conditional fields
public Flags flags;
/// Call ID
public long id;
/// Access hash
public long access_hash;
/// Date
public DateTime date;
/// Admin ID
public long admin_id;
/// Participant ID
public long participant_id;
/// Phone call protocol info
public PhoneCallProtocol protocol;
/// When was the phone call received
[IfFlag(0)] public DateTime receive_date;
[Flags] public enum Flags
{
/// Field has a value
has_receive_date = 0x1,
/// Is this a video call
video = 0x40,
}
/// Call ID
public override long ID => id;
}
/// Requested phone call See
[TLDef(0x14B0ED0C)]
public class PhoneCallRequested : PhoneCallBase
{
/// Flags, see TL conditional fields
public Flags flags;
/// Phone call ID
public long id;
/// Access hash
public long access_hash;
/// When was the phone call created
public DateTime date;
/// ID of the creator of the phone call
public long admin_id;
/// ID of the other participant of the phone call
public long participant_id;
/// Parameter for key exchange
public byte[] g_a_hash;
/// Call protocol info to be passed to libtgvoip
public PhoneCallProtocol protocol;
[Flags] public enum Flags
{
/// Whether this is a video call
video = 0x40,
}
/// Phone call ID
public override long ID => id;
}
/// An accepted phone call See
[TLDef(0x3660C311)]
public class PhoneCallAccepted : PhoneCallBase
{
/// Flags, see TL conditional fields
public Flags flags;
/// ID of accepted phone call
public long id;
/// Access hash of phone call
public long access_hash;
/// When was the call accepted
public DateTime date;
/// ID of the call creator
public long admin_id;
/// ID of the other user in the call
public long participant_id;
/// B parameter for secure E2E phone call key exchange
public byte[] g_b;
/// Protocol to use for phone call
public PhoneCallProtocol protocol;
[Flags] public enum Flags
{
/// Whether this is a video call
video = 0x40,
}
/// ID of accepted phone call
public override long ID => id;
}
/// Phone call See
[TLDef(0x967F7C67)]
public class PhoneCall : PhoneCallBase
{
/// Flags, see TL conditional fields
public Flags flags;
/// Call ID
public long id;
/// Access hash
public long access_hash;
/// Date of creation of the call
public DateTime date;
/// User ID of the creator of the call
public long admin_id;
/// User ID of the other participant in the call
public long participant_id;
/// Parameter for key exchange
public byte[] g_a_or_b;
/// Key fingerprint
public long key_fingerprint;
/// Call protocol info to be passed to libtgvoip
public PhoneCallProtocol protocol;
/// List of endpoints the user can connect to to exchange call data
public PhoneConnectionBase[] connections;
/// When was the call actually started
public DateTime start_date;
[Flags] public enum Flags
{
/// Whether P2P connection to the other peer is allowed
p2p_allowed = 0x20,
/// Whether this is a video call
video = 0x40,
}
/// Call ID
public override long ID => id;
}
/// Indicates a discarded phone call See
[TLDef(0x50CA4DE1)]
public class PhoneCallDiscarded : PhoneCallBase
{
/// Flags, see TL conditional fields
public Flags flags;
/// Call ID
public long id;
/// Why was the phone call discarded
[IfFlag(0)] public PhoneCallDiscardReason reason;
/// Duration of the phone call in seconds
[IfFlag(1)] public int duration;
[Flags] public enum Flags
{
/// Field has a value
has_reason = 0x1,
/// Field has a value
has_duration = 0x2,
/// Whether the server required the user to rate the call
need_rating = 0x4,
/// Whether the server required the client to send the libtgvoip call debug data
need_debug = 0x8,
/// Whether the call was a video call
video = 0x40,
}
/// Call ID
public override long ID => id;
}
/// Phone call connection Derived classes: , See
public abstract class PhoneConnectionBase : IObject
{
/// Endpoint ID
public abstract long ID { get; }
/// IP address of endpoint
public abstract string Ip { get; }
/// IPv6 address of endpoint
public abstract string Ipv6 { get; }
/// Port ID
public abstract int Port { get; }
}
/// Identifies an endpoint that can be used to connect to the other user in a phone call See
[TLDef(0x9D4C17C0)]
public class PhoneConnection : PhoneConnectionBase
{
/// Endpoint ID
public long id;
/// IP address of endpoint
public string ip;
/// IPv6 address of endpoint
public string ipv6;
/// Port ID
public int port;
/// Our peer tag
public byte[] peer_tag;
/// Endpoint ID
public override long ID => id;
/// IP address of endpoint
public override string Ip => ip;
/// IPv6 address of endpoint
public override string Ipv6 => ipv6;
/// Port ID
public override int Port => port;
}
/// WebRTC connection parameters See
[TLDef(0x635FE375)]
public class PhoneConnectionWebrtc : PhoneConnectionBase
{
/// Flags, see TL conditional fields
public Flags flags;
/// Endpoint ID
public long id;
/// IP address
public string ip;
/// IPv6 address
public string ipv6;
/// Port
public int port;
/// Username
public string username;
/// Password
public string password;
[Flags] public enum Flags
{
/// Whether this is a TURN endpoint
turn = 0x1,
/// Whether this is a STUN endpoint
stun = 0x2,
}
/// Endpoint ID
public override long ID => id;
/// IP address
public override string Ip => ip;
/// IPv6 address
public override string Ipv6 => ipv6;
/// Port
public override int Port => port;
}
/// Protocol info for libtgvoip See
[TLDef(0xFC878FC8)]
public class PhoneCallProtocol : IObject
{
/// Flags, see TL conditional fields
public Flags flags;
/// Minimum layer for remote libtgvoip
public int min_layer;
/// Maximum layer for remote libtgvoip
public int max_layer;
/// When using phone.requestCall and phone.acceptCall, specify all library versions supported by the client.
The server will merge and choose the best library version supported by both peers, returning only the best value in the result of the callee's phone.acceptCall and in the update received by the caller.
public string[] library_versions;
[Flags] public enum Flags
{
/// Whether to allow P2P connection to the other participant
udp_p2p = 0x1,
/// Whether to allow connection to the other participants through the reflector servers
udp_reflector = 0x2,
}
}
/// A VoIP phone call See
[TLDef(0xEC82E140)]
public class Phone_PhoneCall : IObject
{
/// The VoIP phone call
public PhoneCallBase phone_call;
/// VoIP phone call participants
public Dictionary users;
}
/// Represents the download status of a CDN file Derived classes: , See
public abstract class Upload_CdnFileBase : IObject { }
/// The file was cleared from the temporary RAM cache of the CDN and has to be reuploaded. See
[TLDef(0xEEA8E46E)]
public class Upload_CdnFileReuploadNeeded : Upload_CdnFileBase
{
/// Request token (see CDN)
public byte[] request_token;
}
/// Represent a chunk of a CDN file. See
[TLDef(0xA99FCA4F)]
public class Upload_CdnFile : Upload_CdnFileBase
{
/// The data
public byte[] bytes;
}
/// Public key to use only during handshakes to CDN DCs. See
[TLDef(0xC982EABA)]
public class CdnPublicKey : IObject
{
/// CDN DC ID
public int dc_id;
/// RSA public key
public string public_key;
}
/// Configuration for CDN file downloads. See
[TLDef(0x5725E40A)]
public class CdnConfig : IObject
{
/// Vector of public keys to use only during handshakes to CDN DCs.
public CdnPublicKey[] public_keys;
}
/// Language pack string Derived classes: , , See
public abstract class LangPackStringBase : IObject
{
/// Language key
public abstract string Key { get; }
}
/// Translated localization string See
[TLDef(0xCAD181F6)]
public class LangPackString : LangPackStringBase
{
/// Language key
public string key;
/// Value
public string value;
/// Language key
public override string Key => key;
}
/// A language pack string which has different forms based on the number of some object it mentions. See https://www.unicode.org/cldr/charts/latest/supplemental/language_plural_rules.html for more info See
[TLDef(0x6C47AC9F)]
public class LangPackStringPluralized : LangPackStringBase
{
/// Flags, see TL conditional fields
public Flags flags;
/// Localization key
public string key;
/// Value for zero objects
[IfFlag(0)] public string zero_value;
/// Value for one object
[IfFlag(1)] public string one_value;
/// Value for two objects
[IfFlag(2)] public string two_value;
/// Value for a few objects
[IfFlag(3)] public string few_value;
/// Value for many objects
[IfFlag(4)] public string many_value;
/// Default value
public string other_value;
[Flags] public enum Flags
{
/// Field has a value
has_zero_value = 0x1,
/// Field has a value
has_one_value = 0x2,
/// Field has a value
has_two_value = 0x4,
/// Field has a value
has_few_value = 0x8,
/// Field has a value
has_many_value = 0x10,
}
/// Localization key
public override string Key => key;
}
/// Deleted localization string See
[TLDef(0x2979EEB2)]
public class LangPackStringDeleted : LangPackStringBase
{
/// Localization key
public string key;
/// Localization key
public override string Key => key;
}
/// Changes to the app's localization pack See
[TLDef(0xF385C1F6)]
public class LangPackDifference : IObject
{
/// Language code
public string lang_code;
/// Previous version number
public int from_version;
/// New version number
public int version;
/// Localized strings
public LangPackStringBase[] strings;
}
/// Identifies a localization pack See
[TLDef(0xEECA5CE3)]
public class LangPackLanguage : IObject
{
/// Flags, see TL conditional fields
public Flags flags;
/// Language name
public string name;
/// Language name in the language itself
public string native_name;
/// Language code (pack identifier)
public string lang_code;
/// Identifier of a base language pack; may be empty. If a string is missed in the language pack, then it should be fetched from base language pack. Unsupported in custom language packs
[IfFlag(1)] public string base_lang_code;
/// A language code to be used to apply plural forms. See https://www.unicode.org/cldr/charts/latest/supplemental/language_plural_rules.html for more info
public string plural_code;
/// Total number of non-deleted strings from the language pack
public int strings_count;
/// Total number of translated strings from the language pack
public int translated_count;
/// Link to language translation interface; empty for custom local language packs
public string translations_url;
[Flags] public enum Flags
{
/// Whether the language pack is official
official = 0x1,
/// Field has a value
has_base_lang_code = 0x2,
/// Is this a localization pack for an RTL language
rtl = 0x4,
/// Is this a beta localization pack?
beta = 0x8,
}
}
/// Channel admin log event Derived classes: , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , See
public abstract class ChannelAdminLogEventAction : IObject { }
/// Channel/supergroup title was changed See
[TLDef(0xE6DFB825)]
public class ChannelAdminLogEventActionChangeTitle : ChannelAdminLogEventAction
{
/// Previous title
public string prev_value;
/// New title
public string new_value;
}
/// The description was changed See
[TLDef(0x55188A2E)]
public class ChannelAdminLogEventActionChangeAbout : ChannelAdminLogEventAction
{
/// Previous description
public string prev_value;
/// New description
public string new_value;
}
/// Channel/supergroup username was changed See
[TLDef(0x6A4AFC38)]
public class ChannelAdminLogEventActionChangeUsername : ChannelAdminLogEventAction
{
/// Old username
public string prev_value;
/// New username
public string new_value;
}
/// The channel/supergroup's picture was changed See
[TLDef(0x434BD2AF)]
public class ChannelAdminLogEventActionChangePhoto : ChannelAdminLogEventAction
{
/// Previous picture
public PhotoBase prev_photo;
/// New picture
public PhotoBase new_photo;
}
/// Invites were enabled/disabled See
[TLDef(0x1B7907AE)]
public class ChannelAdminLogEventActionToggleInvites : ChannelAdminLogEventAction
{
/// New value
public bool new_value;
}
/// Channel signatures were enabled/disabled See
[TLDef(0x26AE0971)]
public class ChannelAdminLogEventActionToggleSignatures : ChannelAdminLogEventAction
{
/// New value
public bool new_value;
}
/// A message was pinned See
[TLDef(0xE9E82C18)]
public class ChannelAdminLogEventActionUpdatePinned : ChannelAdminLogEventAction
{
/// The message that was pinned
public MessageBase message;
}
/// A message was edited See
[TLDef(0x709B2405)]
public class ChannelAdminLogEventActionEditMessage : ChannelAdminLogEventAction
{
/// Old message
public MessageBase prev_message;
/// New message
public MessageBase new_message;
}
/// A message was deleted See
[TLDef(0x42E047BB)]
public class ChannelAdminLogEventActionDeleteMessage : ChannelAdminLogEventAction
{
/// The message that was deleted
public MessageBase message;
}
/// A user has joined the group (in the case of big groups, info of the user that has joined isn't shown) See
[TLDef(0x183040D3)]
public class ChannelAdminLogEventActionParticipantJoin : ChannelAdminLogEventAction { }
/// A user left the channel/supergroup (in the case of big groups, info of the user that has joined isn't shown) See
[TLDef(0xF89777F2)]
public class ChannelAdminLogEventActionParticipantLeave : ChannelAdminLogEventAction { }
/// A user was invited to the group See
[TLDef(0xE31C34D8)]
public class ChannelAdminLogEventActionParticipantInvite : ChannelAdminLogEventAction
{
/// The user that was invited
public ChannelParticipantBase participant;
}
/// The banned rights of a user were changed See
[TLDef(0xE6D83D7E)]
public class ChannelAdminLogEventActionParticipantToggleBan : ChannelAdminLogEventAction
{
/// Old banned rights of user
public ChannelParticipantBase prev_participant;
/// New banned rights of user
public ChannelParticipantBase new_participant;
}
/// The admin rights of a user were changed See
[TLDef(0xD5676710)]
public class ChannelAdminLogEventActionParticipantToggleAdmin : ChannelAdminLogEventAction
{
/// Previous admin rights
public ChannelParticipantBase prev_participant;
/// New admin rights
public ChannelParticipantBase new_participant;
}
/// The supergroup's stickerset was changed See
[TLDef(0xB1C3CAA7)]
public class ChannelAdminLogEventActionChangeStickerSet : ChannelAdminLogEventAction
{
/// Previous stickerset
public InputStickerSet prev_stickerset;
/// New stickerset
public InputStickerSet new_stickerset;
}
/// The hidden prehistory setting was changed See
[TLDef(0x5F5C95F1)]
public class ChannelAdminLogEventActionTogglePreHistoryHidden : ChannelAdminLogEventAction
{
/// New value
public bool new_value;
}
/// The default banned rights were modified See
[TLDef(0x2DF5FC0A)]
public class ChannelAdminLogEventActionDefaultBannedRights : ChannelAdminLogEventAction
{
/// Previous global banned rights
public ChatBannedRights prev_banned_rights;
/// New glboal banned rights.
public ChatBannedRights new_banned_rights;
}
/// A poll was stopped See
[TLDef(0x8F079643)]
public class ChannelAdminLogEventActionStopPoll : ChannelAdminLogEventAction
{
/// The poll that was stopped
public MessageBase message;
}
/// The linked chat was changed See
[TLDef(0x050C7AC8)]
public class ChannelAdminLogEventActionChangeLinkedChat : ChannelAdminLogEventAction
{
/// Previous linked chat
public long prev_value;
/// New linked chat
public long new_value;
}
/// The geogroup location was changed See
[TLDef(0x0E6B76AE)]
public class ChannelAdminLogEventActionChangeLocation : ChannelAdminLogEventAction
{
/// Previous location
public ChannelLocation prev_value;
/// New location
public ChannelLocation new_value;
}
/// Slow mode setting for supergroups was changed See
[TLDef(0x53909779)]
public class ChannelAdminLogEventActionToggleSlowMode : ChannelAdminLogEventAction
{
/// Previous slow mode value
public int prev_value;
/// New slow mode value
public int new_value;
}
/// A group call was started See
[TLDef(0x23209745)]
public class ChannelAdminLogEventActionStartGroupCall : ChannelAdminLogEventAction
{
/// Group call
public InputGroupCall call;
}
/// A group call was terminated See
[TLDef(0xDB9F9140)]
public class ChannelAdminLogEventActionDiscardGroupCall : ChannelAdminLogEventAction
{
/// The group call that was terminated
public InputGroupCall call;
}
/// A group call participant was muted See
[TLDef(0xF92424D2)]
public class ChannelAdminLogEventActionParticipantMute : ChannelAdminLogEventAction
{
/// The participant that was muted
public GroupCallParticipant participant;
}
/// A group call participant was unmuted See
[TLDef(0xE64429C0)]
public class ChannelAdminLogEventActionParticipantUnmute : ChannelAdminLogEventAction
{
/// The participant that was unmuted
public GroupCallParticipant participant;
}
/// Group call settings were changed See
[TLDef(0x56D6A247)]
public class ChannelAdminLogEventActionToggleGroupCallSetting : ChannelAdminLogEventAction
{
/// Whether all users are muted by default upon joining
public bool join_muted;
}
/// A user joined the supergroup/channel using a specific invite link See
[TLDef(0x5CDADA77)]
public class ChannelAdminLogEventActionParticipantJoinByInvite : ChannelAdminLogEventAction
{
/// The invite link used to join the supergroup/channel
public ExportedChatInvite invite;
}
/// A chat invite was deleted See
[TLDef(0x5A50FCA4)]
public class ChannelAdminLogEventActionExportedInviteDelete : ChannelAdminLogEventAction
{
/// The deleted chat invite
public ExportedChatInvite invite;
}
/// A specific invite link was revoked See
[TLDef(0x410A134E)]
public class ChannelAdminLogEventActionExportedInviteRevoke : ChannelAdminLogEventAction
{
/// The invite link that was revoked
public ExportedChatInvite invite;
}
/// A chat invite was edited See
[TLDef(0xE90EBB59)]
public class ChannelAdminLogEventActionExportedInviteEdit : ChannelAdminLogEventAction
{
/// Previous chat invite information
public ExportedChatInvite prev_invite;
/// New chat invite information
public ExportedChatInvite new_invite;
}
/// channelAdminLogEvent.user_id has set the volume of participant.peer to participant.volume See
[TLDef(0x3E7F6847)]
public class ChannelAdminLogEventActionParticipantVolume : ChannelAdminLogEventAction
{
/// The participant whose volume was changed
public GroupCallParticipant participant;
}
/// The Time-To-Live of messages in this chat was changed See
[TLDef(0x6E941A38)]
public class ChannelAdminLogEventActionChangeHistoryTTL : ChannelAdminLogEventAction
{
/// Previous value
public int prev_value;
/// New value
public int new_value;
}
/// See
[TLDef(0xAFB6144A)]
public class ChannelAdminLogEventActionParticipantJoinByRequest : ChannelAdminLogEventAction
{
public ExportedChatInvite invite;
public long approved_by;
}
/// See
[TLDef(0xCB2AC766)]
public class ChannelAdminLogEventActionToggleNoForwards : ChannelAdminLogEventAction
{
public bool new_value;
}
/// See
[TLDef(0x278F2868)]
public class ChannelAdminLogEventActionSendMessage : ChannelAdminLogEventAction
{
public MessageBase message;
}
/// See
[TLDef(0x9CF7F76A)]
public class ChannelAdminLogEventActionChangeAvailableReactions : ChannelAdminLogEventAction
{
public string[] prev_value;
public string[] new_value;
}
/// Admin log event See
[TLDef(0x1FAD68CD)]
public class ChannelAdminLogEvent : IObject
{
/// Event ID
public long id;
/// Date
public DateTime date;
/// User ID
public long user_id;
/// Action
public ChannelAdminLogEventAction action;
}
/// Admin log events See
[TLDef(0xED8AF74D)]
public class Channels_AdminLogResults : IObject, IPeerResolver
{
/// Admin log events
public ChannelAdminLogEvent[] events;
/// Chats mentioned in events
public Dictionary chats;
/// Users mentioned in events
public Dictionary users;
/// returns a or for the given Peer
public IPeerInfo UserOrChat(Peer peer) => peer.UserOrChat(users, chats);
}
/// Filter only certain admin log events See
[TLDef(0xEA107AE4)]
public class ChannelAdminLogEventsFilter : IObject
{
/// Flags, see TL conditional fields
public Flags flags;
[Flags] public enum Flags
{
///
join = 0x1,
///
leave = 0x2,
///
invite = 0x4,
///
ban = 0x8,
///
unban = 0x10,
///
kick = 0x20,
///
unkick = 0x40,
///
promote = 0x80,
///
demote = 0x100,
/// Info change events (when , , , , , or data of a channel gets modified)
info = 0x200,
/// Settings change events (, , , )
settings = 0x400,
///
pinned = 0x800,
///
edit = 0x1000,
///
delete = 0x2000,
/// Group call events
group_call = 0x4000,
/// Invite events
invites = 0x8000,
send = 0x10000,
}
}
/// Popular contact See
[TLDef(0x5CE14175)]
public class PopularContact : IObject
{
/// Contact identifier
public long client_id;
/// How many people imported this contact
public int importers;
}
/// Favorited stickers See
/// a null value means messages.favedStickersNotModified
[TLDef(0x2CB51097)]
public class Messages_FavedStickers : IObject
{
/// Hash for pagination, for more info click here
public long hash;
/// Emojis associated to stickers
public StickerPack[] packs;
/// Favorited stickers
public DocumentBase[] stickers;
}
/// Recent t.me urls Derived classes: , , , , See
public abstract class RecentMeUrl : IObject
{
/// URL
public string url;
}
/// Unknown t.me url See
[TLDef(0x46E1D13D)]
public class RecentMeUrlUnknown : RecentMeUrl { }
/// Recent t.me link to a user See
[TLDef(0xB92C09E2, inheritBefore = true)]
public class RecentMeUrlUser : RecentMeUrl
{
/// User ID
public long user_id;
}
/// Recent t.me link to a chat See
[TLDef(0xB2DA71D2, inheritBefore = true)]
public class RecentMeUrlChat : RecentMeUrl
{
/// Chat ID
public long chat_id;
}
/// Recent t.me invite link to a chat See
[TLDef(0xEB49081D, inheritBefore = true)]
public class RecentMeUrlChatInvite : RecentMeUrl
{
/// Chat invitation
public ChatInviteBase chat_invite;
}
/// Recent t.me stickerset installation URL See
[TLDef(0xBC0A57DC, inheritBefore = true)]
public class RecentMeUrlStickerSet : RecentMeUrl
{
/// Stickerset
public StickerSetCoveredBase set;
}
/// Recent t.me URLs See
[TLDef(0x0E0310D7)]
public class Help_RecentMeUrls : IObject, IPeerResolver
{
/// URLs
public RecentMeUrl[] urls;
/// Chats
public Dictionary chats;
/// Users
public Dictionary users;
/// returns a or for the given Peer
public IPeerInfo UserOrChat(Peer peer) => peer.UserOrChat(users, chats);
}
/// A single media in an album or grouped media sent with messages.sendMultiMedia. See
[TLDef(0x1CC6E91F)]
public class InputSingleMedia : IObject
{
/// Flags, see TL conditional fields
public Flags flags;
/// The media
public InputMedia media;
/// Unique client media ID required to prevent message resending
public long random_id;
/// A caption for the media
public string message;
/// Message entities for styled text
[IfFlag(0)] public MessageEntity[] entities;
[Flags] public enum Flags
{
/// Field has a value
has_entities = 0x1,
}
}
/// Represents a bot logged in using the Telegram login widget See
[TLDef(0xA6F8F452)]
public class WebAuthorization : IObject
{
/// Authorization hash
public long hash;
/// Bot ID
public long bot_id;
/// The domain name of the website on which the user has logged in.
public string domain;
/// Browser user-agent
public string browser;
/// Platform
public string platform;
/// When was the web session created
public int date_created;
/// When was the web session last active
public int date_active;
/// IP address
public string ip;
/// Region, determined from IP address
public string region;
}
/// Web authorizations See
[TLDef(0xED56C9FC)]
public class Account_WebAuthorizations : IObject
{
/// Web authorization list
public WebAuthorization[] authorizations;
/// Users
public Dictionary users;
}
/// A message Derived classes: , , , See
public abstract class InputMessage : IObject { }
/// Message by ID See
[TLDef(0xA676A322)]
public class InputMessageID : InputMessage
{
/// Message ID
public int id;
}
/// Message to which the specified message replies to See
[TLDef(0xBAD88395)]
public class InputMessageReplyTo : InputMessage
{
/// ID of the message that replies to the message we need
public int id;
}
/// Pinned message See
[TLDef(0x86872538)]
public class InputMessagePinned : InputMessage { }
/// Used by bots for fetching information about the message that originated a callback query See
[TLDef(0xACFA1A7E)]
public class InputMessageCallbackQuery : InputMessage
{
/// Message ID
public int id;
/// Callback query ID
public long query_id;
}
/// Peer, or all peers in a certain folder Derived classes: , See
public abstract class InputDialogPeerBase : IObject { }
/// A peer See
[TLDef(0xFCAAFEB7)]
public class InputDialogPeer : InputDialogPeerBase
{
/// Peer
public InputPeer peer;
}
/// All peers in a peer folder See
[TLDef(0x64600527)]
public class InputDialogPeerFolder : InputDialogPeerBase
{
/// Peer folder ID, for more info click here
public int folder_id;
}
/// Peer, or all peers in a folder Derived classes: , See
public abstract class DialogPeerBase : IObject { }
/// Peer See
[TLDef(0xE56DBF05)]
public class DialogPeer : DialogPeerBase
{
/// Peer
public Peer peer;
}
/// Peer folder See
[TLDef(0x514519E2)]
public class DialogPeerFolder : DialogPeerBase
{
/// Peer folder ID, for more info click here
public int folder_id;
}
/// Found stickersets See
/// a null value means messages.foundStickerSetsNotModified
[TLDef(0x8AF09DD2)]
public class Messages_FoundStickerSets : IObject
{
/// Hash for pagination, for more info click here
public long hash;
/// Found stickersets
public StickerSetCoveredBase[] sets;
}
/// SHA256 Hash of an uploaded file, to be checked for validity after download See
[TLDef(0x6242C773)]
public class FileHash : IObject
{
/// Offset from where to start computing SHA-256 hash
public int offset;
/// Length
public int limit;
/// SHA-256 Hash of file chunk, to be checked for validity after download
public byte[] hash;
}
/// Info about an MTProxy used to connect. See
[TLDef(0x75588B3F)]
public class InputClientProxy : IObject
{
/// Proxy address
public string address;
/// Proxy port
public int port;
}
/// Update of Telegram's terms of service Derived classes: , See
public abstract class Help_TermsOfServiceUpdateBase : IObject { }
/// No changes were made to telegram's terms of service See
[TLDef(0xE3309F7F)]
public class Help_TermsOfServiceUpdateEmpty : Help_TermsOfServiceUpdateBase
{
/// New TOS updates will have to be queried using help.getTermsOfServiceUpdate in expires seconds
public DateTime expires;
}
/// Info about an update of telegram's terms of service. If the terms of service are declined, then the account.deleteAccount method should be called with the reason "Decline ToS update" See
[TLDef(0x28ECF961)]
public class Help_TermsOfServiceUpdate : Help_TermsOfServiceUpdateBase
{
/// New TOS updates will have to be queried using help.getTermsOfServiceUpdate in expires seconds
public DateTime expires;
/// New terms of service
public Help_TermsOfService terms_of_service;
}
/// Secure passport file, for more info see the passport docs » Derived classes: , See
public abstract class InputSecureFileBase : IObject
{
/// Secure file ID
public abstract long ID { get; }
}
/// Uploaded secure file, for more info see the passport docs » See
[TLDef(0x3334B0F0)]
public class InputSecureFileUploaded : InputSecureFileBase
{
/// Secure file ID
public long id;
/// Secure file part count
public int parts;
/// MD5 hash of encrypted uploaded file, to be checked server-side
public byte[] md5_checksum;
/// File hash
public byte[] file_hash;
/// Secret
public byte[] secret;
/// Secure file ID
public override long ID => id;
}
/// Preuploaded passport file, for more info see the passport docs » See
[TLDef(0x5367E5BE)]
public class InputSecureFile : InputSecureFileBase
{
/// Secure file ID
public long id;
/// ⚠ REQUIRED FIELD. See how to obtain it
Secure file access hash
public long access_hash;
/// Secure file ID
public override long ID => id;
}
/// Secure passport file, for more info see the passport docs » See
/// a null value means secureFileEmpty
[TLDef(0xE0277A62)]
public partial class SecureFile : IObject
{
/// ID
public long id;
/// Access hash
public long access_hash;
/// File size
public int size;
/// DC ID
public int dc_id;
/// Date of upload
public DateTime date;
/// File hash
public byte[] file_hash;
/// Secret
public byte[] secret;
}
/// Secure passport data, for more info see the passport docs » See
[TLDef(0x8AEABEC3)]
public class SecureData : IObject
{
/// Data
public byte[] data;
/// Data hash
public byte[] data_hash;
/// Secret
public byte[] secret;
}
/// Plaintext verified passport data. Derived classes: , See
public abstract class SecurePlainData : IObject { }
/// Phone number to use in telegram passport: it must be verified, first ». See
[TLDef(0x7D6099DD)]
public class SecurePlainPhone : SecurePlainData
{
/// Phone number
public string phone;
}
/// Email address to use in telegram passport: it must be verified, first ». See
[TLDef(0x21EC5A5F)]
public class SecurePlainEmail : SecurePlainData
{
/// Email address
public string email;
}
/// Secure value type See
public enum SecureValueType : uint
{
///Personal details
PersonalDetails = 0x9D2A81E3,
///Passport
Passport = 0x3DAC6A00,
///Driver's license
DriverLicense = 0x06E425C4,
///Identity card
IdentityCard = 0xA0D0744B,
///Internal passport
InternalPassport = 0x99A48F23,
///Address
Address = 0xCBE31E26,
///Utility bill
UtilityBill = 0xFC36954E,
///Bank statement
BankStatement = 0x89137C0D,
///Rental agreement
RentalAgreement = 0x8B883488,
///Internal registration passport
PassportRegistration = 0x99E3806A,
///Temporary registration
TemporaryRegistration = 0xEA02EC33,
///Phone
Phone = 0xB320AADB,
///Email
Email = 0x8E3CA7EE,
}
/// Secure value See
[TLDef(0x187FA0CA)]
public class SecureValue : IObject
{
/// Flags, see TL conditional fields
public Flags flags;
/// Secure passport value type
public SecureValueType type;
/// Encrypted Telegram Passport element data
[IfFlag(0)] public SecureData data;
/// Encrypted passport file with the front side of the document
[IfFlag(1)] public SecureFile front_side;
/// Encrypted passport file with the reverse side of the document
[IfFlag(2)] public SecureFile reverse_side;
/// Encrypted passport file with a selfie of the user holding the document
[IfFlag(3)] public SecureFile selfie;
/// Array of encrypted passport files with translated versions of the provided documents
[IfFlag(6)] public SecureFile[] translation;
/// Array of encrypted passport files with photos the of the documents
[IfFlag(4)] public SecureFile[] files;
/// Plaintext verified passport data
[IfFlag(5)] public SecurePlainData plain_data;
/// Data hash
public byte[] hash;
[Flags] public enum Flags
{
/// Field has a value
has_data = 0x1,
/// Field has a value
has_front_side = 0x2,
/// Field has a value
has_reverse_side = 0x4,
/// Field has a value
has_selfie = 0x8,
/// Field has a value
has_files = 0x10,
/// Field has a value
has_plain_data = 0x20,
/// Field has a value
has_translation = 0x40,
}
}
/// Secure value, for more info see the passport docs » See
[TLDef(0xDB21D0A7)]
public class InputSecureValue : IObject
{
/// Flags, see TL conditional fields
public Flags flags;
/// Secure passport value type
public SecureValueType type;
/// Encrypted Telegram Passport element data
[IfFlag(0)] public SecureData data;
/// Encrypted passport file with the front side of the document
[IfFlag(1)] public InputSecureFileBase front_side;
/// Encrypted passport file with the reverse side of the document
[IfFlag(2)] public InputSecureFileBase reverse_side;
/// Encrypted passport file with a selfie of the user holding the document
[IfFlag(3)] public InputSecureFileBase selfie;
/// Array of encrypted passport files with translated versions of the provided documents
[IfFlag(6)] public InputSecureFileBase[] translation;
/// Array of encrypted passport files with photos the of the documents
[IfFlag(4)] public InputSecureFileBase[] files;
/// Plaintext verified passport data
[IfFlag(5)] public SecurePlainData plain_data;
[Flags] public enum Flags
{
/// Field has a value
has_data = 0x1,
/// Field has a value
has_front_side = 0x2,
/// Field has a value
has_reverse_side = 0x4,
/// Field has a value
has_selfie = 0x8,
/// Field has a value
has_files = 0x10,
/// Field has a value
has_plain_data = 0x20,
/// Field has a value
has_translation = 0x40,
}
}
/// Secure value hash See
[TLDef(0xED1ECDB0)]
public class SecureValueHash : IObject
{
/// Secure value type
public SecureValueType type;
/// Hash
public byte[] hash;
}
/// Secure value error Derived classes: , , , , , , , , See
public abstract class SecureValueErrorBase : IObject
{
/// The section of the user's Telegram Passport which has the error, one of , , , , ,
public abstract SecureValueType Type { get; }
/// Error message
public abstract string Text { get; }
}
/// Represents an issue in one of the data fields that was provided by the user. The error is considered resolved when the field's value changes. See
[TLDef(0xE8A40BD9)]
public class SecureValueErrorData : SecureValueErrorBase
{
/// The section of the user's Telegram Passport which has the error, one of , , , , ,
public SecureValueType type;
/// Data hash
public byte[] data_hash;
/// Name of the data field which has the error
public string field;
/// Error message
public string text;
/// The section of the user's Telegram Passport which has the error, one of , , , , ,
public override SecureValueType Type => type;
/// Error message
public override string Text => text;
}
/// Represents an issue with the front side of a document. The error is considered resolved when the file with the front side of the document changes. See
[TLDef(0x00BE3DFA)]
public class SecureValueErrorFrontSide : SecureValueErrorBase
{
/// One of , , ,
public SecureValueType type;
/// File hash
public byte[] file_hash;
/// Error message
public string text;
/// One of , , ,
public override SecureValueType Type => type;
/// Error message
public override string Text => text;
}
/// Represents an issue with the reverse side of a document. The error is considered resolved when the file with reverse side of the document changes. See
[TLDef(0x868A2AA5)]
public class SecureValueErrorReverseSide : SecureValueErrorBase
{
/// One of ,
public SecureValueType type;
/// File hash
public byte[] file_hash;
/// Error message
public string text;
/// One of ,
public override SecureValueType Type => type;
/// Error message
public override string Text => text;
}
/// Represents an issue with the selfie with a document. The error is considered resolved when the file with the selfie changes. See
[TLDef(0xE537CED6)]
public class SecureValueErrorSelfie : SecureValueErrorBase
{
/// One of , , ,
public SecureValueType type;
/// File hash
public byte[] file_hash;
/// Error message
public string text;
/// One of , , ,
public override SecureValueType Type => type;
/// Error message
public override string Text => text;
}
/// Represents an issue with a document scan. The error is considered resolved when the file with the document scan changes. See
[TLDef(0x7A700873)]
public class SecureValueErrorFile : SecureValueErrorBase
{
/// One of , , , ,
public SecureValueType type;
/// File hash
public byte[] file_hash;
/// Error message
public string text;
/// One of , , , ,
public override SecureValueType Type => type;
/// Error message
public override string Text => text;
}
/// Represents an issue with a list of scans. The error is considered resolved when the list of files containing the scans changes. See
[TLDef(0x666220E9)]
public class SecureValueErrorFiles : SecureValueErrorBase
{
/// One of , , , ,
public SecureValueType type;
/// File hash
public byte[][] file_hash;
/// Error message
public string text;
/// One of , , , ,
public override SecureValueType Type => type;
/// Error message
public override string Text => text;
}
/// Secure value error See
[TLDef(0x869D758F)]
public class SecureValueError : SecureValueErrorBase
{
/// Type of element which has the issue
public SecureValueType type;
/// Hash
public byte[] hash;
/// Error message
public string text;
/// Type of element which has the issue
public override SecureValueType Type => type;
/// Error message
public override string Text => text;
}
/// Represents an issue with one of the files that constitute the translation of a document. The error is considered resolved when the file changes. See
[TLDef(0xA1144770)]
public class SecureValueErrorTranslationFile : SecureValueErrorFile
{
}
/// Represents an issue with the translated version of a document. The error is considered resolved when a file with the document translation changes. See
[TLDef(0x34636DD8)]
public class SecureValueErrorTranslationFiles : SecureValueErrorFiles
{
}
/// Encrypted credentials required to decrypt telegram passport data. See
[TLDef(0x33F0EA47)]
public class SecureCredentialsEncrypted : IObject
{
/// Encrypted JSON-serialized data with unique user's payload, data hashes and secrets required for EncryptedPassportElement decryption and authentication, as described in decrypting data »
public byte[] data;
/// Data hash for data authentication as described in decrypting data »
public byte[] hash;
/// Secret, encrypted with the bot's public RSA key, required for data decryption as described in decrypting data »
public byte[] secret;
}
/// Telegram Passport authorization form See
[TLDef(0xAD2E1CD8)]
public class Account_AuthorizationForm : IObject
{
/// Flags, see TL conditional fields
public Flags flags;
/// Required Telegram Passport documents
public SecureRequiredTypeBase[] required_types;
/// Already submitted Telegram Passport documents
public SecureValue[] values;
/// Telegram Passport errors
public SecureValueErrorBase[] errors;
/// Info about the bot to which the form will be submitted
public Dictionary users;
/// URL of the service's privacy policy
[IfFlag(0)] public string privacy_policy_url;
[Flags] public enum Flags
{
/// Field has a value
has_privacy_policy_url = 0x1,
}
}
/// The sent email code See
[TLDef(0x811F854F)]
public class Account_SentEmailCode : IObject
{
/// The email (to which the code was sent) must match this pattern
public string email_pattern;
/// The length of the verification code
public int length;
}
/// Deep linking info See
/// a null value means help.deepLinkInfoEmpty
[TLDef(0x6A4EE832)]
public class Help_DeepLinkInfo : IObject
{
/// Flags, see TL conditional fields
public Flags flags;
/// Message to show to the user
public string message;
/// Message entities for styled text
[IfFlag(1)] public MessageEntity[] entities;
[Flags] public enum Flags
{
/// An update of the app is required to parse this link
update_app = 0x1,
/// Field has a value
has_entities = 0x2,
}
}
/// Saved contact Derived classes: See
public abstract class SavedContact : IObject { }
/// Saved contact See
[TLDef(0x1142BD56)]
public class SavedPhoneContact : SavedContact
{
/// Phone number
public string phone;
/// First name
public string first_name;
/// Last name
public string last_name;
/// Date added
public DateTime date;
}
/// Takout info See
[TLDef(0x4DBA4501)]
public class Account_Takeout : IObject
{
/// Takeout ID
public long id;
}
/// Key derivation function to use when generating the password hash for SRP two-factor authorization Derived classes: See
/// a null value means passwordKdfAlgoUnknown
public abstract class PasswordKdfAlgo : IObject { }
/// This key derivation algorithm defines that SRP 2FA login must be used See
[TLDef(0x3A912D4A)]
public class PasswordKdfAlgoSHA256SHA256PBKDF2HMACSHA512iter100000SHA256ModPow : PasswordKdfAlgo
{
/// One of two salts used by the derivation function (see SRP 2FA login)
public byte[] salt1;
/// One of two salts used by the derivation function (see SRP 2FA login)
public byte[] salt2;
/// Base (see SRP 2FA login)
public int g;
/// 2048-bit modulus (see SRP 2FA login)
public byte[] p;
}
/// KDF algorithm to use for computing telegram passport hash Derived classes: , See
/// a null value means securePasswordKdfAlgoUnknown
public abstract class SecurePasswordKdfAlgo : IObject
{
/// Salt
public byte[] salt;
}
/// PBKDF2 with SHA512 and 100000 iterations KDF algo See
[TLDef(0xBBF2DDA0)]
public class SecurePasswordKdfAlgoPBKDF2HMACSHA512iter100000 : SecurePasswordKdfAlgo { }
/// SHA512 KDF algo See
[TLDef(0x86471D92)]
public class SecurePasswordKdfAlgoSHA512 : SecurePasswordKdfAlgo { }
/// Secure settings See
[TLDef(0x1527BCAC)]
public class SecureSecretSettings : IObject
{
/// Secure KDF algo
public SecurePasswordKdfAlgo secure_algo;
/// Secure secret
public byte[] secure_secret;
/// Secret ID
public long secure_secret_id;
}
/// Constructor for checking the validity of a 2FA SRP password (see SRP) See
/// a null value means inputCheckPasswordEmpty
[TLDef(0xD27FF082)]
public class InputCheckPasswordSRP : IObject
{
/// SRP ID
public long srp_id;
/// A parameter (see SRP)
public byte[] A;
/// M1 parameter (see SRP)
public byte[] M1;
}
/// Required secure file type Derived classes: , See
public abstract class SecureRequiredTypeBase : IObject { }
/// Required type See
[TLDef(0x829D99DA)]
public class SecureRequiredType : SecureRequiredTypeBase
{
/// Flags, see TL conditional fields
public Flags flags;
/// Secure value type
public SecureValueType type;
[Flags] public enum Flags
{
/// Native names
native_names = 0x1,
/// Is a selfie required
selfie_required = 0x2,
/// Is a translation required
translation_required = 0x4,
}
}
/// One of See
[TLDef(0x027477B4)]
public class SecureRequiredTypeOneOf : SecureRequiredTypeBase
{
/// Secure required value types
public SecureRequiredTypeBase[] types;
}
/// Telegram passport configuration See
/// a null value means help.passportConfigNotModified
[TLDef(0xA098D6AF)]
public class Help_PassportConfig : IObject
{
/// Hash for pagination, for more info click here
public int hash;
/// Localization
public DataJSON countries_langs;
}
/// Event that occured in the application. See
[TLDef(0x1D1B1245)]
public class InputAppEvent : IObject
{
/// Client's exact timestamp for the event
public double time;
/// Type of event
public string type;
/// Arbitrary numeric value for more convenient selection of certain event types, or events referring to a certain object
public long peer;
/// Details of the event
public JSONValue data;
}
/// JSON key: value pair See
[TLDef(0xC0DE1BD9)]
public partial class JsonObjectValue : IObject
{
/// Key
public string key;
/// Value
public JSONValue value;
}
/// JSON value Derived classes: , , , , , See
public abstract partial class JSONValue : IObject { }
/// null JSON value See
[TLDef(0x3F6D7B68)]
public partial class JsonNull : JSONValue { }
/// JSON boolean value See
[TLDef(0xC7345E6A)]
public partial class JsonBool : JSONValue
{
/// Value
public bool value;
}
/// JSON numeric value See
[TLDef(0x2BE0DFA4)]
public partial class JsonNumber : JSONValue
{
/// Value
public double value;
}
/// JSON string See
[TLDef(0xB71E767A)]
public partial class JsonString : JSONValue
{
/// Value
public string value;
}
/// JSON array See
[TLDef(0xF7444763)]
public partial class JsonArray : JSONValue
{
/// JSON values
public JSONValue[] value;
}
/// JSON object value See
[TLDef(0x99C1D49D)]
public partial class JsonObject : JSONValue
{
/// Values
public JsonObjectValue[] value;
}
/// Table cell See
[TLDef(0x34566B6A)]
public class PageTableCell : IObject
{
/// Flags, see TL conditional fields
public Flags flags;
/// Content
[IfFlag(7)] public RichText text;
/// For how many columns should this cell extend
[IfFlag(1)] public int colspan;
/// For how many rows should this cell extend
[IfFlag(2)] public int rowspan;
[Flags] public enum Flags
{
/// Is this element part of the column header
header = 0x1,
/// Field has a value
has_colspan = 0x2,
/// Field has a value
has_rowspan = 0x4,
/// Horizontally centered block
align_center = 0x8,
/// Right-aligned block
align_right = 0x10,
/// Vertically centered block
valign_middle = 0x20,
/// Block vertically-alligned to the bottom
valign_bottom = 0x40,
/// Field has a value
has_text = 0x80,
}
}
/// Table row See
[TLDef(0xE0C0C5E5)]
public class PageTableRow : IObject
{
/// Table cells
public PageTableCell[] cells;
}
/// Page caption See
[TLDef(0x6F747657)]
public class PageCaption : IObject
{
/// Caption
public RichText text;
/// Credits
public RichText credit;
}
/// Item in block list Derived classes: , See
public abstract class PageListItem : IObject { }
/// List item See
[TLDef(0xB92FB6CD)]
public class PageListItemText : PageListItem
{
/// Text
public RichText text;
}
/// List item See
[TLDef(0x25E073FC)]
public class PageListItemBlocks : PageListItem
{
/// Blocks
public PageBlock[] blocks;
}
/// Represents an instant view ordered list Derived classes: , See
public abstract class PageListOrderedItem : IObject
{
/// Number of element within ordered list
public string num;
}
/// Ordered list of text items See
[TLDef(0x5E068047, inheritBefore = true)]
public class PageListOrderedItemText : PageListOrderedItem
{
/// Text
public RichText text;
}
/// Ordered list of IV blocks See
[TLDef(0x98DD8936, inheritBefore = true)]
public class PageListOrderedItemBlocks : PageListOrderedItem
{
/// Item contents
public PageBlock[] blocks;
}
/// Related article See
[TLDef(0xB390DC08)]
public class PageRelatedArticle : IObject
{
/// Flags, see TL conditional fields
public Flags flags;
/// URL of article
public string url;
/// Webpage ID of generated IV preview
public long webpage_id;
/// Title
[IfFlag(0)] public string title;
/// Description
[IfFlag(1)] public string description;
/// ID of preview photo
[IfFlag(2)] public long photo_id;
/// Author name
[IfFlag(3)] public string author;
/// Date of pubblication
[IfFlag(4)] public DateTime published_date;
[Flags] public enum Flags
{
/// Field has a value
has_title = 0x1,
/// Field has a value
has_description = 0x2,
/// Field has a value
has_photo_id = 0x4,
/// Field has a value
has_author = 0x8,
/// Field has a value
has_published_date = 0x10,
}
}
/// Instant view page See
[TLDef(0x98657F0D)]
public class Page : IObject
{
/// Flags, see TL conditional fields
public Flags flags;
/// Original page HTTP URL
public string url;
/// Page elements (like with HTML elements, only as TL constructors)
public PageBlock[] blocks;
/// Photos in page
public PhotoBase[] photos;
/// Media in page
public DocumentBase[] documents;
/// Viewcount
[IfFlag(3)] public int views;
[Flags] public enum Flags
{
/// Indicates that not full page preview is available to the client and it will need to fetch full Instant View from the server using messages.getWebPagePreview.
part = 0x1,
/// Whether the page contains RTL text
rtl = 0x2,
/// Whether this is an IV v2 page
v2 = 0x4,
/// Field has a value
has_views = 0x8,
}
}
/// Localized name for telegram support See
[TLDef(0x8C05F1C9)]
public class Help_SupportName : IObject
{
/// Localized name
public string name;
}
/// Internal use See
/// a null value means help.userInfoEmpty
[TLDef(0x01EB3758)]
public class Help_UserInfo : IObject
{
/// Info
public string message;
/// Message entities for styled text
public MessageEntity[] entities;
/// Author
public string author;
/// Date
public DateTime date;
}
/// A possible answer of a poll See
[TLDef(0x6CA9C2E9)]
public class PollAnswer : IObject
{
/// Textual representation of the answer
public string text;
/// The param that has to be passed to messages.sendVote.
public byte[] option;
}
/// Poll See
[TLDef(0x86E18161)]
public class Poll : IObject
{
/// ID of the poll
public long id;
/// Flags, see TL conditional fields
public Flags flags;
/// The question of the poll
public string question;
/// The possible answers, vote using messages.sendVote.
public PollAnswer[] answers;
/// Amount of time in seconds the poll will be active after creation, 5-600. Can't be used together with close_date.
[IfFlag(4)] public int close_period;
/// Point in time (Unix timestamp) when the poll will be automatically closed. Must be at least 5 and no more than 600 seconds in the future; can't be used together with close_period.
[IfFlag(5)] public DateTime close_date;
[Flags] public enum Flags
{
/// Whether the poll is closed and doesn't accept any more answers
closed = 0x1,
/// Whether cast votes are publicly visible to all users (non-anonymous poll)
public_voters = 0x2,
/// Whether multiple options can be chosen as answer
multiple_choice = 0x4,
/// Whether this is a quiz (with wrong and correct answers, results shown in the return type)
quiz = 0x8,
/// Field has a value
has_close_period = 0x10,
/// Field has a value
has_close_date = 0x20,
}
}
/// A poll answer, and how users voted on it See
[TLDef(0x3B6DDAD2)]
public class PollAnswerVoters : IObject
{
/// Flags, see TL conditional fields
public Flags flags;
/// The param that has to be passed to messages.sendVote.
public byte[] option;
/// How many users voted for this option
public int voters;
[Flags] public enum Flags
{
/// Whether we have chosen this answer
chosen = 0x1,
/// For quizes, whether the option we have chosen is correct
correct = 0x2,
}
}
/// Results of poll See
[TLDef(0xDCB82EA3)]
public class PollResults : IObject
{
/// Flags, see TL conditional fields
public Flags flags;
/// Poll results
[IfFlag(1)] public PollAnswerVoters[] results;
/// Total number of people that voted in the poll
[IfFlag(2)] public int total_voters;
/// IDs of the last users that recently voted in the poll
[IfFlag(3)] public long[] recent_voters;
/// Explanation of quiz solution
[IfFlag(4)] public string solution;
/// Message entities for styled text in quiz solution
[IfFlag(4)] public MessageEntity[] solution_entities;
[Flags] public enum Flags
{
/// Similar to min objects, used for poll constructors that are the same for all users so they don't have option chosen by the current user (you can use messages.getPollResults to get the full poll results).
min = 0x1,
/// Field has a value
has_results = 0x2,
/// Field has a value
has_total_voters = 0x4,
/// Field has a value
has_recent_voters = 0x8,
/// Field has a value
has_solution = 0x10,
}
}
/// Number of online users in a chat See
[TLDef(0xF041E250)]
public class ChatOnlines : IObject
{
/// Number of online users
public int onlines;
}
/// URL with chat statistics See
[TLDef(0x47A971E0)]
public class StatsURL : IObject
{
/// Chat statistics
public string url;
}
/// Represents the rights of an admin in a channel/supergroup. See
[TLDef(0x5FB224D5)]
public class ChatAdminRights : IObject
{
/// Flags, see TL conditional fields
public Flags flags;
[Flags] public enum Flags
{
/// If set, allows the admin to modify the description of the channel/supergroup
change_info = 0x1,
/// If set, allows the admin to post messages in the channel
post_messages = 0x2,
/// If set, allows the admin to also edit messages from other admins in the channel
edit_messages = 0x4,
/// If set, allows the admin to also delete messages from other admins in the channel
delete_messages = 0x8,
/// If set, allows the admin to ban users from the channel/supergroup
ban_users = 0x10,
/// If set, allows the admin to invite users in the channel/supergroup
invite_users = 0x20,
/// If set, allows the admin to pin messages in the channel/supergroup
pin_messages = 0x80,
/// If set, allows the admin to add other admins with the same (or more limited) permissions in the channel/supergroup
add_admins = 0x200,
/// Whether this admin is anonymous
anonymous = 0x400,
/// If set, allows the admin to change group call/livestream settings
manage_call = 0x800,
/// Set this flag if none of the other flags are set, but you stil want the user to be an admin.
other = 0x1000,
}
}
/// Represents the rights of a normal user in a supergroup/channel/chat. In this case, the flags are inverted: if set, a flag does not allow a user to do X. See
[TLDef(0x9F120418)]
public class ChatBannedRights : IObject
{
/// Flags, see TL conditional fields
public Flags flags;
/// Validity of said permissions (it is considered forever any value less then 30 seconds or more then 366 days).
public DateTime until_date;
[Flags] public enum Flags
{
/// If set, does not allow a user to view messages in a supergroup/channel/chat
view_messages = 0x1,
/// If set, does not allow a user to send messages in a supergroup/chat
send_messages = 0x2,
/// If set, does not allow a user to send any media in a supergroup/chat
send_media = 0x4,
/// If set, does not allow a user to send stickers in a supergroup/chat
send_stickers = 0x8,
/// If set, does not allow a user to send gifs in a supergroup/chat
send_gifs = 0x10,
/// If set, does not allow a user to send games in a supergroup/chat
send_games = 0x20,
/// If set, does not allow a user to use inline bots in a supergroup/chat
send_inline = 0x40,
/// If set, does not allow a user to embed links in the messages of a supergroup/chat
embed_links = 0x80,
/// If set, does not allow a user to send polls in a supergroup/chat
send_polls = 0x100,
/// If set, does not allow any user to change the description of a supergroup/chat
change_info = 0x400,
/// If set, does not allow any user to invite users in a supergroup/chat
invite_users = 0x8000,
/// If set, does not allow any user to pin messages in a supergroup/chat
pin_messages = 0x20000,
}
}
/// Wallpaper Derived classes: , , See
public abstract class InputWallPaperBase : IObject { }
/// Wallpaper See
[TLDef(0xE630B979)]
public class InputWallPaper : InputWallPaperBase
{
/// Wallpaper ID
public long id;
/// ⚠ REQUIRED FIELD. See how to obtain it
Access hash
public long access_hash;
}
/// Wallpaper by slug (a unique ID) See
[TLDef(0x72091C80)]
public class InputWallPaperSlug : InputWallPaperBase
{
/// Unique wallpaper ID
public string slug;
}
/// Wallpaper with no file access hash, used for example when deleting (unsave=true) wallpapers using account.saveWallPaper, specifying just the wallpaper ID. See
[TLDef(0x967A462E)]
public class InputWallPaperNoFile : InputWallPaperBase
{
/// Wallpaper ID
public long id;
}
/// Installed wallpapers See
/// a null value means account.wallPapersNotModified
[TLDef(0xCDC3858C)]
public class Account_WallPapers : IObject
{
/// Hash for pagination, for more info click here
public long hash;
/// Wallpapers
public WallPaperBase[] wallpapers;
}
/// Settings used by telegram servers for sending the confirm code. See
[TLDef(0x8A6469C2)]
public class CodeSettings : IObject
{
/// Flags, see TL conditional fields
public Flags flags;
[IfFlag(6)] public byte[][] logout_tokens;
[Flags] public enum Flags
{
/// Whether to allow phone verification via phone calls.
allow_flashcall = 0x1,
/// Pass true if the phone number is used on the current device. Ignored if allow_flashcall is not set.
current_number = 0x2,
/// If a token that will be included in eventually sent SMSs is required: required in newer versions of android, to use the android SMS receiver APIs
allow_app_hash = 0x10,
allow_missed_call = 0x20,
/// Field has a value
has_logout_tokens = 0x40,
}
}
/// Wallpaper settings See
[TLDef(0x1DC1BCA4)]
public class WallPaperSettings : IObject
{
/// Flags, see TL conditional fields
public Flags flags;
/// If set, a PNG pattern is to be combined with the color chosen by the user: the main color of the background in RGB24 format
[IfFlag(0)] public int background_color;
/// If set, a PNG pattern is to be combined with the first and second background colors (RGB24 format) in a top-bottom gradient
[IfFlag(4)] public int second_background_color;
/// If set, a PNG pattern is to be combined with the first, second and third background colors (RGB24 format) in a freeform gradient
[IfFlag(5)] public int third_background_color;
/// If set, a PNG pattern is to be combined with the first, second, third and fourth background colors (RGB24 format) in a freeform gradient
[IfFlag(6)] public int fourth_background_color;
/// Intensity of the pattern when it is shown above the main background color, 0-100
[IfFlag(3)] public int intensity;
/// Clockwise rotation angle of the gradient, in degrees; 0-359. Should be always divisible by 45
[IfFlag(4)] public int rotation;
[Flags] public enum Flags
{
/// Field has a value
has_background_color = 0x1,
/// If set, the wallpaper must be downscaled to fit in 450x450 square and then box-blurred with radius 12
blur = 0x2,
/// If set, the background needs to be slightly moved when device is rotated
motion = 0x4,
/// Field has a value
has_intensity = 0x8,
/// Field has a value
has_second_background_color = 0x10,
/// Field has a value
has_third_background_color = 0x20,
/// Field has a value
has_fourth_background_color = 0x40,
}
}
/// Autodownload settings See
[TLDef(0xE04232F3)]
public class AutoDownloadSettings : IObject
{
/// Flags, see TL conditional fields
public Flags flags;
/// Maximum size of photos to preload
public int photo_size_max;
/// Maximum size of videos to preload
public int video_size_max;
/// Maximum size of other files to preload
public int file_size_max;
/// Maximum suggested bitrate for uploading videos
public int video_upload_maxbitrate;
[Flags] public enum Flags
{
/// Disable automatic media downloads?
disabled = 0x1,
/// Whether to preload the first seconds of videos larger than the specified limit
video_preload_large = 0x2,
/// Whether to preload the next audio track when you're listening to music
audio_preload_next = 0x4,
/// Whether to enable data saving mode in phone calls
phonecalls_less_data = 0x8,
}
}
/// Media autodownload settings See
[TLDef(0x63CACF26)]
public class Account_AutoDownloadSettings : IObject
{
/// Low data usage preset
public AutoDownloadSettings low;
/// Medium data usage preset
public AutoDownloadSettings medium;
/// High data usage preset
public AutoDownloadSettings high;
}
/// Emoji keyword See
[TLDef(0xD5B3B9F9)]
public class EmojiKeyword : IObject
{
/// Keyword
public string keyword;
/// Emojis associated to keyword
public string[] emoticons;
}
/// Deleted emoji keyword See
[TLDef(0x236DF622)]
public class EmojiKeywordDeleted : EmojiKeyword { }
/// Changes to emoji keywords See
[TLDef(0x5CC761BD)]
public class EmojiKeywordsDifference : IObject
{
/// Language code for keywords
public string lang_code;
/// Previous emoji keyword list version
public int from_version;
/// Current version of emoji keyword list
public int version;
/// Emojis associated to keywords
public EmojiKeyword[] keywords;
}
/// An HTTP URL which can be used to automatically log in into translation platform and suggest new emoji replacements. The URL will be valid for 30 seconds after generation See
[TLDef(0xA575739D)]
public class EmojiURL : IObject
{
/// An HTTP URL which can be used to automatically log in into translation platform and suggest new emoji replacements. The URL will be valid for 30 seconds after generation
public string url;
}
/// Emoji language See
[TLDef(0xB3FB5361)]
public class EmojiLanguage : IObject
{
/// Language code
public string lang_code;
}
/// Folder See
[TLDef(0xFF544E65)]
public class Folder : IObject
{
/// Flags, see TL conditional fields
public Flags flags;
/// Folder ID
public int id;
/// Folder title
public string title;
/// Folder picture
[IfFlag(3)] public ChatPhoto photo;
[Flags] public enum Flags
{
/// Automatically add new channels to this folder
autofill_new_broadcasts = 0x1,
/// Automatically add joined new public supergroups to this folder
autofill_public_groups = 0x2,
/// Automatically add new private chats to this folder
autofill_new_correspondents = 0x4,
/// Field has a value
has_photo = 0x8,
}
}
/// Peer in a folder See
[TLDef(0xFBD2C296)]
public class InputFolderPeer : IObject
{
/// Peer
public InputPeer peer;
/// Peer folder ID, for more info click here
public int folder_id;
}
/// Peer in a folder See
[TLDef(0xE9BAA668)]
public class FolderPeer : IObject
{
/// Folder peer info
public Peer peer;
/// Peer folder ID, for more info click here
public int folder_id;
}
/// Indicates how many results would be found by a messages.search call with the same parameters See
[TLDef(0xE844EBFF)]
public class Messages_SearchCounter : IObject
{
/// Flags, see TL conditional fields
public Flags flags;
/// Provided message filter
public MessagesFilter filter;
/// Number of results that were found server-side
public int count;
[Flags] public enum Flags
{
/// If set, the results may be inexact
inexact = 0x2,
}
}
/// URL authorization result Derived classes: , , See
public abstract class UrlAuthResult : IObject { }
/// Details about the authorization request, for more info click here » See
[TLDef(0x92D33A0E)]
public class UrlAuthResultRequest : UrlAuthResult
{
/// Flags, see TL conditional fields
public Flags flags;
/// Username of a bot, which will be used for user authorization. If not specified, the current bot's username will be assumed. The url's domain must be the same as the domain linked with the bot. See Linking your domain to the bot for more details.
public UserBase bot;
/// The domain name of the website on which the user will log in.
public string domain;
[Flags] public enum Flags
{
/// Whether the bot would like to send messages to the user
request_write_access = 0x1,
}
}
/// Details about an accepted authorization request, for more info click here » See
[TLDef(0x8F8C0E4E)]
public class UrlAuthResultAccepted : UrlAuthResult
{
/// The URL name of the website on which the user has logged in.
public string url;
}
/// Details about an accepted authorization request, for more info click here » See
[TLDef(0xA9D6DB1F)]
public class UrlAuthResultDefault : UrlAuthResult { }
/// Geographical location of supergroup (geogroups) See
/// a null value means channelLocationEmpty
[TLDef(0x209B82DB)]
public class ChannelLocation : IObject
{
/// Geographical location of supergrup
public GeoPoint geo_point;
/// Textual description of the address
public string address;
}
/// Geolocated peer Derived classes: , See
public abstract class PeerLocatedBase : IObject
{
/// Validity period of current data
public abstract DateTime Expires { get; }
}
/// Peer geolocated nearby See
[TLDef(0xCA461B5D)]
public class PeerLocated : PeerLocatedBase
{
/// Peer
public Peer peer;
/// Validity period of current data
public DateTime expires;
/// Distance from the peer in meters
public int distance;
/// Validity period of current data
public override DateTime Expires => expires;
}
/// Current peer See
[TLDef(0xF8EC284B)]
public class PeerSelfLocated : PeerLocatedBase
{
/// Expiry of geolocation info for current peer
public DateTime expires;
/// Expiry of geolocation info for current peer
public override DateTime Expires => expires;
}
/// Restriction reason. See
[TLDef(0xD072ACB4)]
public class RestrictionReason : IObject
{
/// Platform identifier (ios, android, wp, all, etc.), can be concatenated with a dash as separator (android-ios, ios-wp, etc)
public string platform;
/// Restriction reason (porno, terms, etc.)
public string reason;
/// Error message to be shown to the user
public string text;
}
/// Cloud theme Derived classes: , See
public abstract class InputThemeBase : IObject { }
/// Theme See
[TLDef(0x3C5693E9)]
public class InputTheme : InputThemeBase
{
/// ID
public long id;
/// ⚠ REQUIRED FIELD. See how to obtain it
Access hash
public long access_hash;
}
/// Theme by theme ID See
[TLDef(0xF5890DF1)]
public class InputThemeSlug : InputThemeBase
{
/// Unique theme ID
public string slug;
}
/// Theme See
[TLDef(0xA00E67D6)]
public class Theme : IObject
{
/// Flags, see TL conditional fields
public Flags flags;
/// Theme ID
public long id;
/// Theme access hash
public long access_hash;
/// Unique theme ID
public string slug;
/// Theme name
public string title;
/// Theme
[IfFlag(2)] public DocumentBase document;
/// Theme settings
[IfFlag(3)] public ThemeSettings[] settings;
[IfFlag(6)] public string emoticon;
/// Installation count
[IfFlag(4)] public int installs_count;
[Flags] public enum Flags
{
/// Whether the current user is the creator of this theme
creator = 0x1,
/// Whether this is the default theme
default_ = 0x2,
/// Field has a value
has_document = 0x4,
/// Field has a value
has_settings = 0x8,
/// Field has a value
has_installs_count = 0x10,
/// Whether this theme is meant to be used as a chat theme
for_chat = 0x20,
/// Field has a value
has_emoticon = 0x40,
}
}
/// Installed themes See
/// a null value means account.themesNotModified
[TLDef(0x9A3D8C6D)]
public class Account_Themes : IObject
{
/// Hash for pagination, for more info click here
public long hash;
/// Themes
public Theme[] themes;
}
/// Login token (for QR code login) Derived classes: , , See
public abstract class Auth_LoginTokenBase : IObject { }
/// Login token (for QR code login) See
[TLDef(0x629F1980)]
public class Auth_LoginToken : Auth_LoginTokenBase
{
/// Expiry date of QR code
public DateTime expires;
/// Token to render in QR code
public byte[] token;
}
/// Repeat the query to the specified DC See
[TLDef(0x068E9916)]
public class Auth_LoginTokenMigrateTo : Auth_LoginTokenBase
{
/// DC ID
public int dc_id;
/// Token to use for login
public byte[] token;
}
/// Login via token (QR code) succeded! See
[TLDef(0x390D5C5E)]
public class Auth_LoginTokenSuccess : Auth_LoginTokenBase
{
/// Authorization info
public Auth_AuthorizationBase authorization;
}
/// Sensitive content settings See
[TLDef(0x57E28221)]
public class Account_ContentSettings : IObject
{
/// Flags, see TL conditional fields
public Flags flags;
[Flags] public enum Flags
{
/// Whether viewing of sensitive (NSFW) content is enabled
sensitive_enabled = 0x1,
/// Whether the current client can change the sensitive content settings to view NSFW content
sensitive_can_change = 0x2,
}
}
/// Inactive chat list See
[TLDef(0xA927FEC5)]
public class Messages_InactiveChats : IObject, IPeerResolver
{
/// When was the chat last active
public int[] dates;
/// Chat list
public Dictionary chats;
/// Users mentioned in the chat list
public Dictionary users;
/// returns a or for the given Peer
public IPeerInfo UserOrChat(Peer peer) => peer.UserOrChat(users, chats);
}
/// Basic theme settings See
public enum BaseTheme : uint
{
///Classic theme
Classic = 0xC3A12462,
///Day theme
Day = 0xFBD81688,
///Night theme
Night = 0xB7B31EA8,
///Tinted theme
Tinted = 0x6D5F77EE,
///Arctic theme
Arctic = 0x5B11125A,
}
/// Theme settings See
[TLDef(0x8FDE504F)]
public class InputThemeSettings : IObject
{
/// Flags, see TL conditional fields
public Flags flags;
/// Default theme on which this theme is based
public BaseTheme base_theme;
/// Accent color, ARGB format
public int accent_color;
/// Accent color of outgoing messages in ARGB format
[IfFlag(3)] public int outbox_accent_color;
/// The fill to be used as a background for outgoing messages, in RGB24 format.
If just one or two equal colors are provided, describes a solid fill of a background.
If two different colors are provided, describes the top and bottom colors of a 0-degree gradient.
If three or four colors are provided, describes a freeform gradient fill of a background.
[IfFlag(0)] public int[] message_colors;
/// Wallpaper
[IfFlag(1)] public InputWallPaperBase wallpaper;
/// Wallpaper settings
[IfFlag(1)] public WallPaperSettings wallpaper_settings;
[Flags] public enum Flags
{
/// Field has a value
has_message_colors = 0x1,
/// Field has a value
has_wallpaper = 0x2,
/// If set, the freeform gradient fill needs to be animated on every sent message
message_colors_animated = 0x4,
/// Field has a value
has_outbox_accent_color = 0x8,
}
}
/// Theme settings See
[TLDef(0xFA58B6D4)]
public class ThemeSettings : IObject
{
/// Flags, see TL conditional fields
public Flags flags;
/// Base theme
public BaseTheme base_theme;
/// Accent color, ARGB format
public int accent_color;
/// Accent color of outgoing messages in ARGB format
[IfFlag(3)] public int outbox_accent_color;
/// The fill to be used as a background for outgoing messages, in RGB24 format.
If just one or two equal colors are provided, describes a solid fill of a background.
If two different colors are provided, describes the top and bottom colors of a 0-degree gradient.
If three or four colors are provided, describes a freeform gradient fill of a background.
[IfFlag(0)] public int[] message_colors;
/// Wallpaper
[IfFlag(1)] public WallPaperBase wallpaper;
[Flags] public enum Flags
{
/// Field has a value
has_message_colors = 0x1,
/// Field has a value
has_wallpaper = 0x2,
/// If set, the freeform gradient fill needs to be animated on every sent message.
message_colors_animated = 0x4,
/// Field has a value
has_outbox_accent_color = 0x8,
}
}
/// Webpage attributes Derived classes: See
public abstract class WebPageAttribute : IObject { }
/// Page theme See
[TLDef(0x54B56617)]
public class WebPageAttributeTheme : WebPageAttribute
{
/// Flags, see TL conditional fields
public Flags flags;
/// Theme files
[IfFlag(0)] public DocumentBase[] documents;
/// Theme settings
[IfFlag(1)] public ThemeSettings settings;
[Flags] public enum Flags
{
/// Field has a value
has_documents = 0x1,
/// Field has a value
has_settings = 0x2,
}
}
/// How a user voted in a poll Derived classes: , , See
public abstract class MessageUserVoteBase : IObject
{
/// User ID
public abstract long UserId { get; }
/// When did the user cast the vote
public abstract DateTime Date { get; }
}
/// How a user voted in a poll See
[TLDef(0x34D247B4)]
public class MessageUserVote : MessageUserVoteBase
{
/// User ID
public long user_id;
/// The option chosen by the user
public byte[] option;
/// When did the user cast the vote
public DateTime date;
/// User ID
public override long UserId => user_id;
/// When did the user cast the vote
public override DateTime Date => date;
}
/// How a user voted in a poll (reduced constructor, returned if an option was provided to messages.getPollVotes) See
[TLDef(0x3CA5B0EC)]
public class MessageUserVoteInputOption : MessageUserVoteBase
{
/// The user that voted for the queried option
public long user_id;
/// When did the user cast the vote
public DateTime date;
/// The user that voted for the queried option
public override long UserId => user_id;
/// When did the user cast the vote
public override DateTime Date => date;
}
/// How a user voted in a multiple-choice poll See
[TLDef(0x8A65E557)]
public class MessageUserVoteMultiple : MessageUserVoteBase
{
/// User ID
public long user_id;
/// Options chosen by the user
public byte[][] options;
/// When did the user cast their votes
public DateTime date;
/// User ID
public override long UserId => user_id;
/// When did the user cast their votes
public override DateTime Date => date;
}
/// How users voted in a poll See
[TLDef(0x0823F649)]
public class Messages_VotesList : IObject
{
/// Flags, see TL conditional fields
public Flags flags;
/// Total number of votes for all options (or only for the chosen option, if provided to messages.getPollVotes)
public int count;
/// Vote info for each user
public MessageUserVoteBase[] votes;
/// Info about users that voted in the poll
public Dictionary users;
/// Offset to use with the next messages.getPollVotes request, empty string if no more results are available.
[IfFlag(0)] public string next_offset;
[Flags] public enum Flags
{
/// Field has a value
has_next_offset = 0x1,
}
}
/// Credit card info URL provided by the bank See
[TLDef(0xF568028A)]
public class BankCardOpenUrl : IObject
{
/// Info URL
public string url;
/// Bank name
public string name;
}
/// Credit card info, provided by the card's bank(s) See
[TLDef(0x3E24E573)]
public class Payments_BankCardData : IObject
{
/// Credit card title
public string title;
/// Info URL(s) provided by the card's bank(s)
public BankCardOpenUrl[] open_urls;
}
/// Dialog filter AKA folder See
[TLDef(0x7438F7E8)]
public class DialogFilter : IObject
{
/// Flags, see TL conditional fields
public Flags flags;
/// Folder ID
public int id;
/// Folder name
public string title;
/// Folder emoticon
[IfFlag(25)] public string emoticon;
/// Pinned chats, folders can have unlimited pinned chats
public InputPeer[] pinned_peers;
/// Include the following chats in this folder
public InputPeer[] include_peers;
/// Exclude the following chats from this folder
public InputPeer[] exclude_peers;
[Flags] public enum Flags
{
/// Whether to include all contacts in this folder
contacts = 0x1,
/// Whether to include all non-contacts in this folder
non_contacts = 0x2,
/// Whether to include all groups in this folder
groups = 0x4,
/// Whether to include all channels in this folder
broadcasts = 0x8,
/// Whether to include all bots in this folder
bots = 0x10,
/// Whether to exclude muted chats from this folder
exclude_muted = 0x800,
/// Whether to exclude read chats from this folder
exclude_read = 0x1000,
/// Whether to exclude archived chats from this folder
exclude_archived = 0x2000,
/// Field has a value
has_emoticon = 0x2000000,
}
}
/// Suggested folders See
[TLDef(0x77744D4A)]
public class DialogFilterSuggested : IObject
{
/// Folder info
public DialogFilter filter;
/// Folder description
public string description;
}
/// Channel statistics date range See
[TLDef(0xB637EDAF)]
public class StatsDateRangeDays : IObject
{
/// Initial date
public DateTime min_date;
/// Final date
public DateTime max_date;
}
/// Statistics value couple; initial and final value for period of time currently in consideration See
[TLDef(0xCB43ACDE)]
public class StatsAbsValueAndPrev : IObject
{
/// Current value
public double current;
/// Previous value
public double previous;
}
/// Channel statistics percentage.
Compute the percentage simply by doing part * total / 100 See
[TLDef(0xCBCE2FE0)]
public class StatsPercentValue : IObject
{
/// Partial value
public double part;
/// Total value
public double total;
}
/// Channel statistics graph Derived classes: , , See
public abstract class StatsGraphBase : IObject { }
/// This channel statistics graph must be generated asynchronously using stats.loadAsyncGraph to reduce server load See
[TLDef(0x4A27EB2D)]
public class StatsGraphAsync : StatsGraphBase
{
/// Token to use for fetching the async graph
public string token;
}
/// An error occurred while generating the statistics graph See
[TLDef(0xBEDC9822)]
public class StatsGraphError : StatsGraphBase
{
/// The error
public string error;
}
/// Channel statistics graph See
[TLDef(0x8EA464B6)]
public class StatsGraph : StatsGraphBase
{
/// Flags, see TL conditional fields
public Flags flags;
/// Statistics data
public DataJSON json;
/// Zoom token
[IfFlag(0)] public string zoom_token;
[Flags] public enum Flags
{
/// Field has a value
has_zoom_token = 0x1,
}
}
/// Message interaction counters See
[TLDef(0xAD4FC9BD)]
public class MessageInteractionCounters : IObject
{
/// Message ID
public int msg_id;
/// Views
public int views;
/// Number of times this message was forwarded
public int forwards;
}
/// Channel statistics. See
[TLDef(0xBDF78394)]
public class Stats_BroadcastStats : IObject
{
/// Period in consideration
public StatsDateRangeDays period;
/// Follower count change for period in consideration
public StatsAbsValueAndPrev followers;
/// total_viewcount/postcount, for posts posted during the period in consideration (views_per_post).
Note that in this case, current refers to the period in consideration (min_date till max_date), and prev refers to the previous period ((min_date - (max_date - min_date)) till min_date).
public StatsAbsValueAndPrev views_per_post;
/// total_viewcount/postcount, for posts posted during the period in consideration (views_per_post).
Note that in this case, current refers to the period in consideration (min_date till max_date), and prev refers to the previous period ((min_date - (max_date - min_date)) till min_date)
public StatsAbsValueAndPrev shares_per_post;
/// Percentage of subscribers with enabled notifications
public StatsPercentValue enabled_notifications;
/// Channel growth graph (absolute subscriber count)
public StatsGraphBase growth_graph;
/// Followers growth graph (relative subscriber count)
public StatsGraphBase followers_graph;
/// Muted users graph (relative)
public StatsGraphBase mute_graph;
/// Views per hour graph (absolute)
public StatsGraphBase top_hours_graph;
/// Interactions graph (absolute)
public StatsGraphBase interactions_graph;
/// IV interactions graph (absolute)
public StatsGraphBase iv_interactions_graph;
/// Views by source graph (absolute)
public StatsGraphBase views_by_source_graph;
/// New followers by source graph (absolute)
public StatsGraphBase new_followers_by_source_graph;
/// Subscriber language graph (piechart)
public StatsGraphBase languages_graph;
/// Recent message interactions
public MessageInteractionCounters[] recent_message_interactions;
}
/// Info about pinned MTProxy or Public Service Announcement peers. Derived classes: , See
public abstract class Help_PromoDataBase : IObject { }
/// No PSA/MTProxy info is available See
[TLDef(0x98F6AC75)]
public class Help_PromoDataEmpty : Help_PromoDataBase
{
/// Re-fetch PSA/MTProxy info after the specified number of seconds
public DateTime expires;
}
/// MTProxy/Public Service Announcement information See
[TLDef(0x8C39793F)]
public class Help_PromoData : Help_PromoDataBase
{
/// Flags, see TL conditional fields
public Flags flags;
/// Expiry of PSA/MTProxy info
public DateTime expires;
/// MTProxy/PSA peer
public Peer peer;
/// Chat info
public Dictionary chats;
/// User info
public Dictionary users;
/// PSA type
[IfFlag(1)] public string psa_type;
/// PSA message
[IfFlag(2)] public string psa_message;
[Flags] public enum Flags
{
/// MTProxy-related channel
proxy = 0x1,
/// Field has a value
has_psa_type = 0x2,
/// Field has a value
has_psa_message = 0x4,
}
/// returns a or for the result
public IPeerInfo UserOrChat => peer.UserOrChat(users, chats);
}
/// Animated profile picture in MPEG4 format See
[TLDef(0xDE33B094)]
public class VideoSize : IObject
{
/// Flags, see TL conditional fields
public Flags flags;
/// u for animated profile pictures, and v for trimmed and downscaled video previews
public string type;
/// Video width
public int w;
/// Video height
public int h;
/// File size
public int size;
/// Timestamp that should be shown as static preview to the user (seconds)
[IfFlag(0)] public double video_start_ts;
[Flags] public enum Flags
{
/// Field has a value
has_video_start_ts = 0x1,
}
}
/// Information about an active user in a supergroup See
[TLDef(0x9D04AF9B)]
public class StatsGroupTopPoster : IObject
{
/// User ID
public long user_id;
/// Number of messages for statistics period in consideration
public int messages;
/// Average number of characters per message
public int avg_chars;
}
/// Information about an active admin in a supergroup See
[TLDef(0xD7584C87)]
public class StatsGroupTopAdmin : IObject
{
/// User ID
public long user_id;
/// Number of deleted messages for statistics period in consideration
public int deleted;
/// Number of kicked users for statistics period in consideration
public int kicked;
/// Number of banned users for statistics period in consideration
public int banned;
}
/// Information about an active supergroup inviter See
[TLDef(0x535F779D)]
public class StatsGroupTopInviter : IObject
{
/// User ID
public long user_id;
/// Number of invitations for statistics period in consideration
public int invitations;
}
/// Supergroup statistics See
[TLDef(0xEF7FF916)]
public class Stats_MegagroupStats : IObject
{
/// Period in consideration
public StatsDateRangeDays period;
/// Member count change for period in consideration
public StatsAbsValueAndPrev members;
/// Message number change for period in consideration
public StatsAbsValueAndPrev messages;
/// Number of users that viewed messages, for range in consideration
public StatsAbsValueAndPrev viewers;
/// Number of users that posted messages, for range in consideration
public StatsAbsValueAndPrev posters;
/// Supergroup growth graph (absolute subscriber count)
public StatsGraphBase growth_graph;
/// Members growth (relative subscriber count)
public StatsGraphBase members_graph;
/// New members by source graph
public StatsGraphBase new_members_by_source_graph;
/// Subscriber language graph (piechart)
public StatsGraphBase languages_graph;
/// Message activity graph (stacked bar graph, message type)
public StatsGraphBase messages_graph;
/// Group activity graph (deleted, modified messages, blocked users)
public StatsGraphBase actions_graph;
/// Activity per hour graph (absolute)
public StatsGraphBase top_hours_graph;
/// Activity per day of week graph (absolute)
public StatsGraphBase weekdays_graph;
/// Info about most active group members
public StatsGroupTopPoster[] top_posters;
/// Info about most active group admins
public StatsGroupTopAdmin[] top_admins;
/// Info about most active group inviters
public StatsGroupTopInviter[] top_inviters;
/// Info about users mentioned in statistics
public Dictionary users;
}
/// Global privacy settings See
[TLDef(0xBEA2F424)]
public class GlobalPrivacySettings : IObject
{
/// Flags, see TL conditional fields
public Flags flags;
/// Whether to archive and mute new chats from non-contacts
[IfFlag(0)] public bool archive_and_mute_new_noncontact_peers;
[Flags] public enum Flags
{
/// Field has a value
has_archive_and_mute_new_noncontact_peers = 0x1,
}
}
/// Country code and phone number pattern of a specific country See
[TLDef(0x4203C5EF)]
public class Help_CountryCode : IObject
{
/// Flags, see TL conditional fields
public Flags flags;
/// ISO country code
public string country_code;
/// Possible phone prefixes
[IfFlag(0)] public string[] prefixes;
/// Phone patterns: for example, XXX XXX XXX
[IfFlag(1)] public string[] patterns;
[Flags] public enum Flags
{
/// Field has a value
has_prefixes = 0x1,
/// Field has a value
has_patterns = 0x2,
}
}
/// Name, ISO code, localized name and phone codes/patterns of a specific country See
[TLDef(0xC3878E23)]
public class Help_Country : IObject
{
/// Flags, see TL conditional fields
public Flags flags;
/// ISO code of country
public string iso2;
/// Name of the country in the country's language
public string default_name;
/// Name of the country in the user's language, if different from the original name
[IfFlag(1)] public string name;
/// Phone codes/patterns
public Help_CountryCode[] country_codes;
[Flags] public enum Flags
{
/// Whether this country should not be shown in the list
hidden = 0x1,
/// Field has a value
has_name = 0x2,
}
}
/// Name, ISO code, localized name and phone codes/patterns of all available countries See
/// a null value means help.countriesListNotModified
[TLDef(0x87D0759E)]
public class Help_CountriesList : IObject
{
/// Name, ISO code, localized name and phone codes/patterns of all available countries
public Help_Country[] countries;
/// Hash for pagination, for more info click here
public int hash;
}
/// View, forward counter + info about replies of a specific message See
[TLDef(0x455B853D)]
public class MessageViews : IObject
{
/// Flags, see TL conditional fields
public Flags flags;
/// Viewcount of message
[IfFlag(0)] public int views;
/// Forward count of message
[IfFlag(1)] public int forwards;
/// Reply and thread information of message
[IfFlag(2)] public MessageReplies replies;
[Flags] public enum Flags
{
/// Field has a value
has_views = 0x1,
/// Field has a value
has_forwards = 0x2,
/// Field has a value
has_replies = 0x4,
}
}
/// View, forward counter + info about replies See
[TLDef(0xB6C4F543)]
public class Messages_MessageViews : IObject, IPeerResolver
{
/// View, forward counter + info about replies
public MessageViews[] views;
/// Chats mentioned in constructor
public Dictionary chats;
/// Users mentioned in constructor
public Dictionary users;
/// returns a or for the given Peer
public IPeerInfo UserOrChat(Peer peer) => peer.UserOrChat(users, chats);
}
/// Information about a message thread See
[TLDef(0xA6341782)]
public class Messages_DiscussionMessage : IObject, IPeerResolver
{
/// Flags, see TL conditional fields
public Flags flags;
/// Discussion messages
public MessageBase[] messages;
/// Message ID of latest reply in this thread
[IfFlag(0)] public int max_id;
/// Message ID of latest read incoming message in this thread
[IfFlag(1)] public int read_inbox_max_id;
/// Message ID of latest read outgoing message in this thread
[IfFlag(2)] public int read_outbox_max_id;
/// Number of unread messages
public int unread_count;
/// Chats mentioned in constructor
public Dictionary chats;
/// Users mentioned in constructor
public Dictionary users;
[Flags] public enum Flags
{
/// Field has a value
has_max_id = 0x1,
/// Field has a value
has_read_inbox_max_id = 0x2,
/// Field has a value
has_read_outbox_max_id = 0x4,
}
/// returns a or for the given Peer
public IPeerInfo UserOrChat(Peer peer) => peer.UserOrChat(users, chats);
}
/// Message replies and thread information See
[TLDef(0xA6D57763)]
public class MessageReplyHeader : IObject
{
/// Flags, see TL conditional fields
public Flags flags;
/// ID of message to which this message is replying
public int reply_to_msg_id;
/// For replies sent in channel discussion threads of which the current user is not a member, the discussion group ID
[IfFlag(0)] public Peer reply_to_peer_id;
/// ID of the message that started this message thread
[IfFlag(1)] public int reply_to_top_id;
[Flags] public enum Flags
{
/// Field has a value
has_reply_to_peer_id = 0x1,
/// Field has a value
has_reply_to_top_id = 0x2,
}
}
/// Info about the comment section of a channel post, or a simple message thread See
[TLDef(0x83D60FC2)]
public class MessageReplies : IObject
{
/// Flags, see TL conditional fields
public Flags flags;
/// Contains the total number of replies in this thread or comment section.
public int replies;
/// PTS of the message that started this thread.
public int replies_pts;
/// For channel post comments, contains information about the last few comment posters for a specific thread, to show a small list of commenter profile pictures in client previews.
[IfFlag(1)] public Peer[] recent_repliers;
/// For channel post comments, contains the ID of the associated discussion supergroup
[IfFlag(0)] public long channel_id;
/// ID of the latest message in this thread or comment section.
[IfFlag(2)] public int max_id;
/// Contains the ID of the latest read message in this thread or comment section.
[IfFlag(3)] public int read_max_id;
[Flags] public enum Flags
{
/// Whether this constructor contains information about the comment section of a channel post, or a simple message thread
comments = 0x1,
/// Field has a value
has_recent_repliers = 0x2,
/// Field has a value
has_max_id = 0x4,
/// Field has a value
has_read_max_id = 0x8,
}
}
/// Information about a blocked peer See
[TLDef(0xE8FD8014)]
public class PeerBlocked : IObject
{
/// Peer ID
public Peer peer_id;
/// When was the peer blocked
public DateTime date;
}
/// Message statistics See
[TLDef(0x8999F295)]
public class Stats_MessageStats : IObject
{
/// Message view graph
public StatsGraphBase views_graph;
}
/// A group call Derived classes: , See
public abstract class GroupCallBase : IObject
{
/// Group call ID
public abstract long ID { get; }
/// Group call access hash
public abstract long AccessHash { get; }
}
/// An ended group call See
[TLDef(0x7780BCB4)]
public class GroupCallDiscarded : GroupCallBase
{
/// Group call ID
public long id;
/// Group call access hash
public long access_hash;
/// Group call duration
public int duration;
/// Group call ID
public override long ID => id;
/// Group call access hash
public override long AccessHash => access_hash;
}
/// Info about a group call or livestream See
[TLDef(0xD597650C)]
public class GroupCall : GroupCallBase
{
/// Flags, see TL conditional fields
public Flags flags;
/// Group call ID
public long id;
/// Group call access hash
public long access_hash;
/// Participant count
public int participants_count;
/// Group call title
[IfFlag(3)] public string title;
/// DC ID to be used for livestream chunks
[IfFlag(4)] public int stream_dc_id;
/// When was the recording started
[IfFlag(5)] public DateTime record_start_date;
/// When is the call scheduled to start
[IfFlag(7)] public DateTime schedule_date;
/// Number of people currently streaming video into the call
[IfFlag(10)] public int unmuted_video_count;
/// Maximum number of people allowed to stream video into the call
public int unmuted_video_limit;
/// Version
public int version;
[Flags] public enum Flags
{
/// Whether the user should be muted upon joining the call
join_muted = 0x2,
/// Whether the current user can change the value of the join_muted flag using phone.toggleGroupCallSettings
can_change_join_muted = 0x4,
/// Field has a value
has_title = 0x8,
/// Field has a value
has_stream_dc_id = 0x10,
/// Field has a value
has_record_start_date = 0x20,
/// Specifies the ordering to use when locally sorting by date and displaying in the UI group call participants.
join_date_asc = 0x40,
/// Field has a value
has_schedule_date = 0x80,
/// Whether we subscribed to the scheduled call
schedule_start_subscribed = 0x100,
/// Whether you can start streaming video into the call
can_start_video = 0x200,
/// Field has a value
has_unmuted_video_count = 0x400,
/// Whether the group call is currently being recorded
record_video_active = 0x800,
}
/// Group call ID
public override long ID => id;
/// Group call access hash
public override long AccessHash => access_hash;
}
/// Points to a specific group call See
[TLDef(0xD8AA840F)]
public class InputGroupCall : IObject
{
/// Group call ID
public long id;
/// ⚠ REQUIRED FIELD. See how to obtain it
Group call access hash
public long access_hash;
}
/// Info about a group call participant See
[TLDef(0xEBA636FE)]
public class GroupCallParticipant : IObject
{
/// Flags, see TL conditional fields
public Flags flags;
/// Peer information
public Peer peer;
/// When did this participant join the group call
public DateTime date;
/// When was this participant last active in the group call
[IfFlag(3)] public DateTime active_date;
/// Source ID
public int source;
/// Volume, if not set the volume is set to 100%.
[IfFlag(7)] public int volume;
/// Info about this participant
[IfFlag(11)] public string about;
/// Specifies the UI visualization order of peers with raised hands: peers with a higher rating should be showed first in the list.
[IfFlag(13)] public long raise_hand_rating;
/// Info about the video stream the participant is currently broadcasting
[IfFlag(6)] public GroupCallParticipantVideo video;
/// Info about the screen sharing stream the participant is currently broadcasting
[IfFlag(14)] public GroupCallParticipantVideo presentation;
[Flags] public enum Flags
{
/// Whether the participant is muted
muted = 0x1,
/// Whether the participant has left
left = 0x2,
/// Whether the participant can unmute themselves
can_self_unmute = 0x4,
/// Field has a value
has_active_date = 0x8,
/// Whether the participant has just joined
just_joined = 0x10,
/// If set, and .version < locally stored call.version, info about this participant should be ignored. If (...), and .version > call.version+1, the participant list should be refetched using phone.getGroupParticipants.
versioned = 0x20,
/// Field has a value
has_video = 0x40,
/// Field has a value
has_volume = 0x80,
/// If not set, the volume and muted_by_you fields can be safely used to overwrite locally cached information; otherwise, volume will contain valid information only if volume_by_admin is set both in the cache and in the received constructor.
min = 0x100,
/// Whether this participant was muted by the current user
muted_by_you = 0x200,
/// Whether our volume can only changed by an admin
volume_by_admin = 0x400,
/// Field has a value
has_about = 0x800,
/// Whether this participant is the current user
self = 0x1000,
/// Field has a value
has_raise_hand_rating = 0x2000,
/// Field has a value
has_presentation = 0x4000,
/// Whether this participant is currently broadcasting video
video_joined = 0x8000,
}
}
/// Contains info about a group call, and partial info about its participants. See
[TLDef(0x9E727AAD)]
public class Phone_GroupCall : IObject, IPeerResolver
{
/// Info about the group call
public GroupCallBase call;
/// A partial list of participants.
public GroupCallParticipant[] participants;
/// Next offset to use when fetching the remaining participants using phone.getGroupParticipants
public string participants_next_offset;
/// Chats mentioned in the participants vector
public Dictionary chats;
/// Users mentioned in the participants vector
public Dictionary users;
/// returns a or for the given Peer
public IPeerInfo UserOrChat(Peer peer) => peer.UserOrChat(users, chats);
}
/// Info about the participants of a group call or livestream See
[TLDef(0xF47751B6)]
public class Phone_GroupParticipants : IObject, IPeerResolver
{
/// Number of participants
public int count;
/// List of participants
public GroupCallParticipant[] participants;
/// If not empty, the specified list of participants is partial, and more participants can be fetched specifying this parameter as offset in phone.getGroupParticipants.
public string next_offset;
/// Mentioned chats
public Dictionary chats;
/// Mentioned users
public Dictionary users;
/// Version info
public int version;
/// returns a or for the given Peer
public IPeerInfo UserOrChat(Peer peer) => peer.UserOrChat(users, chats);
}
/// Type of the chat from which the inline query was sent. See
public enum InlineQueryPeerType : uint
{
///The inline query was sent in a private chat with the bot itself
SameBotPM = 0x3081ED9D,
///The inline query was sent in a private chat
PM = 0x833C0FAC,
///The inline query was sent in a chat
Chat = 0xD766C50A,
///The inline query was sent in a supergroup
Megagroup = 0x5EC4BE43,
///The inline query was sent in a channel
Broadcast = 0x6334EE9A,
}
/// ID of a specific chat import session, click here for more info ». See
[TLDef(0x1662AF0B)]
public class Messages_HistoryImport : IObject
{
/// History import ID
public long id;
}
/// Contains information about a chat export file generated by a foreign chat app, click here for more info.
If neither the pm or group flags are set, the specified chat export was generated from a chat of unknown type. See
[TLDef(0x5E0FB7B9)]
public class Messages_HistoryImportParsed : IObject
{
/// Flags, see TL conditional fields
public Flags flags;
/// Title of the chat.
[IfFlag(2)] public string title;
[Flags] public enum Flags
{
/// The chat export file was generated from a private chat.
pm = 0x1,
/// The chat export file was generated from a group chat.
group = 0x2,
/// Field has a value
has_title = 0x4,
}
}
/// Messages found and affected by changes See
[TLDef(0xEF8D3E6C)]
public class Messages_AffectedFoundMessages : IObject
{
/// Event count after generation
public int pts;
/// Number of events that were generated
public int pts_count;
/// If bigger than zero, the request must be repeated to remove more messages
public int offset;
/// Affected message IDs
public int[] messages;
}
/// When and which user joined the chat using a chat invite See
[TLDef(0x8C5ADFD9)]
public class ChatInviteImporter : IObject
{
public Flags flags;
/// The user
public long user_id;
/// When did the user join
public DateTime date;
[IfFlag(2)] public string about;
[IfFlag(1)] public long approved_by;
[Flags] public enum Flags
{
requested = 0x1,
/// Field has a value
has_approved_by = 0x2,
/// Field has a value
has_about = 0x4,
}
}
/// Info about chat invites exported by a certain admin. See
[TLDef(0xBDC62DCC)]
public class Messages_ExportedChatInvites : IObject
{
/// Number of invites exported by the admin
public int count;
/// Exported invites
public ExportedChatInvite[] invites;
/// Info about the admin
public Dictionary users;
}
/// Contains info about a chat invite, and eventually a pointer to the newest chat invite. Derived classes: , See
public abstract class Messages_ExportedChatInviteBase : IObject
{
/// Info about the chat invite
public abstract ExportedChatInvite Invite { get; }
/// Mentioned users
public abstract Dictionary Users { get; }
}
/// Info about a chat invite See
[TLDef(0x1871BE50)]
public class Messages_ExportedChatInvite : Messages_ExportedChatInviteBase
{
/// Info about the chat invite
public ExportedChatInvite invite;
/// Mentioned users
public Dictionary users;
/// Info about the chat invite
public override ExportedChatInvite Invite => invite;
/// Mentioned users
public override Dictionary Users => users;
}
/// The specified chat invite was replaced with another one See
[TLDef(0x222600EF)]
public class Messages_ExportedChatInviteReplaced : Messages_ExportedChatInviteBase
{
/// The replaced chat invite
public ExportedChatInvite invite;
/// The invite that replaces the previous invite
public ExportedChatInvite new_invite;
/// Mentioned users
public Dictionary users;
/// The replaced chat invite
public override ExportedChatInvite Invite => invite;
/// Mentioned users
public override Dictionary Users => users;
}
/// Info about the users that joined the chat using a specific chat invite See
[TLDef(0x81B6B00A)]
public class Messages_ChatInviteImporters : IObject
{
/// Number of users that joined
public int count;
/// The users that joined
public ChatInviteImporter[] importers;
/// The users that joined
public Dictionary users;
}
/// Info about chat invites generated by admins. See
[TLDef(0xF2ECEF23)]
public class ChatAdminWithInvites : IObject
{
/// The admin
public long admin_id;
/// Number of invites generated by the admin
public int invites_count;
/// Number of revoked invites
public int revoked_invites_count;
}
/// Info about chat invites generated by admins. See
[TLDef(0xB69B72D7)]
public class Messages_ChatAdminsWithInvites : IObject
{
/// Info about chat invites generated by admins.
public ChatAdminWithInvites[] admins;
/// Mentioned users
public Dictionary users;
}
/// Contains a confirmation text to be shown to the user, upon importing chat history, click here for more info ». See
[TLDef(0xA24DE717)]
public class Messages_CheckedHistoryImportPeer : IObject
{
/// A confirmation text to be shown to the user, upon importing chat history ».
public string confirm_text;
}
/// A list of peers that can be used to join a group call, presenting yourself as a specific user/channel. See
[TLDef(0xAFE5623F)]
public class Phone_JoinAsPeers : IObject, IPeerResolver
{
/// Peers
public Peer[] peers;
/// Chats mentioned in the peers vector
public Dictionary chats;
/// Users mentioned in the peers vector
public Dictionary users;
/// returns a or for the given Peer
public IPeerInfo UserOrChat(Peer peer) => peer.UserOrChat(users, chats);
}
/// An invite to a group call or livestream See
[TLDef(0x204BD158)]
public class Phone_ExportedGroupCallInvite : IObject
{
/// Invite link
public string link;
}
/// Describes a group of video synchronization source identifiers See
[TLDef(0xDCB118B7)]
public class GroupCallParticipantVideoSourceGroup : IObject
{
/// SDP semantics
public string semantics;
/// Source IDs
public int[] sources;
}
/// Info about a video stream See
[TLDef(0x67753AC8)]
public class GroupCallParticipantVideo : IObject
{
/// Flags, see TL conditional fields
public Flags flags;
/// Endpoint
public string endpoint;
/// Source groups
public GroupCallParticipantVideoSourceGroup[] source_groups;
/// Audio source ID
[IfFlag(1)] public int audio_source;
[Flags] public enum Flags
{
/// Whether the stream is currently paused
paused = 0x1,
/// Field has a value
has_audio_source = 0x2,
}
}
/// A suggested short name for a stickerpack See
[TLDef(0x85FEA03F)]
public class Stickers_SuggestedShortName : IObject
{
/// Suggested short name
public string short_name;
}
/// Represents a scope where the bot commands, specified using bots.setBotCommands will be valid. Derived classes: , , , , , , See
public abstract class BotCommandScope : IObject { }
/// The commands will be valid in all dialogs See
[TLDef(0x2F6CB2AB)]
public class BotCommandScopeDefault : BotCommandScope { }
/// The specified bot commands will only be valid in all private chats with users. See
[TLDef(0x3C4F04D8)]
public class BotCommandScopeUsers : BotCommandScope { }
/// The specified bot commands will be valid in all groups and supergroups. See
[TLDef(0x6FE1A881)]
public class BotCommandScopeChats : BotCommandScope { }
/// The specified bot commands will be valid only for chat administrators, in all groups and supergroups. See
[TLDef(0xB9AA606A)]
public class BotCommandScopeChatAdmins : BotCommandScope { }
/// The specified bot commands will be valid only in a specific dialog. See
[TLDef(0xDB9D897D)]
public class BotCommandScopePeer : BotCommandScope
{
/// The dialog
public InputPeer peer;
}
/// The specified bot commands will be valid for all admins of the specified group or supergroup. See
[TLDef(0x3FD863D1)]
public class BotCommandScopePeerAdmins : BotCommandScopePeer { }
/// The specified bot commands will be valid only for a specific user in the specified group or supergroup. See
[TLDef(0x0A1321F3, inheritBefore = true)]
public class BotCommandScopePeerUser : BotCommandScopePeer
{
/// The user
public InputUserBase user_id;
}
/// Result of an account.resetPassword request. Derived classes: , , See
public abstract class Account_ResetPasswordResult : IObject { }
/// You recently requested a password reset that was canceled, please wait until the specified date before requesting another reset. See
[TLDef(0xE3779861)]
public class Account_ResetPasswordFailedWait : Account_ResetPasswordResult
{
/// Wait until this date before requesting another reset.
public DateTime retry_date;
}
/// You successfully requested a password reset, please wait until the specified date before finalizing the reset. See
[TLDef(0xE9EFFC7D)]
public class Account_ResetPasswordRequestedWait : Account_ResetPasswordResult
{
/// Wait until this date before finalizing the reset.
public DateTime until_date;
}
/// The 2FA password was reset successfully. See
[TLDef(0xE926D63E)]
public class Account_ResetPasswordOk : Account_ResetPasswordResult { }
/// A sponsored message. See
[TLDef(0x3A836DF8)]
public class SponsoredMessage : IObject
{
/// Flags, see TL conditional fields
public Flags flags;
/// Message ID
public byte[] random_id;
/// ID of the sender of the message
[IfFlag(3)] public Peer from_id;
[IfFlag(4)] public ChatInviteBase chat_invite;
[IfFlag(4)] public string chat_invite_hash;
[IfFlag(2)] public int channel_post;
/// Parameter for the bot start message if the sponsored chat is a chat with a bot.
[IfFlag(0)] public string start_param;
/// Sponsored message
public string message;
/// Message entities for styled text
[IfFlag(1)] public MessageEntity[] entities;
[Flags] public enum Flags
{
/// Field has a value
has_start_param = 0x1,
/// Field has a value
has_entities = 0x2,
/// Field has a value
has_channel_post = 0x4,
/// Field has a value
has_from_id = 0x8,
/// Field has a value
has_chat_invite = 0x10,
}
}
/// A set of sponsored messages associated to a channel See
[TLDef(0x65A4C7D5)]
public class Messages_SponsoredMessages : IObject, IPeerResolver
{
/// Sponsored messages
public SponsoredMessage[] messages;
/// Chats mentioned in the sponsored messages
public Dictionary chats;
/// Users mentioned in the sponsored messages
public Dictionary users;
/// returns a or for the given Peer
public IPeerInfo UserOrChat(Peer peer) => peer.UserOrChat(users, chats);
}
/// See
[TLDef(0xC9B0539F)]
public class SearchResultsCalendarPeriod : IObject
{
public DateTime date;
public int min_msg_id;
public int max_msg_id;
public int count;
}
/// See
[TLDef(0x147EE23C)]
public class Messages_SearchResultsCalendar : IObject, IPeerResolver
{
public Flags flags;
public int count;
public DateTime min_date;
public int min_msg_id;
[IfFlag(1)] public int offset_id_offset;
public SearchResultsCalendarPeriod[] periods;
public MessageBase[] messages;
public Dictionary chats;
public Dictionary users;
[Flags] public enum Flags
{
inexact = 0x1,
/// Field has a value
has_offset_id_offset = 0x2,
}
/// returns a or for the given Peer
public IPeerInfo UserOrChat(Peer peer) => peer.UserOrChat(users, chats);
}
/// See
public abstract class SearchResultsPosition : IObject { }
/// See
[TLDef(0x7F648B67)]
public class SearchResultPosition : SearchResultsPosition
{
public int msg_id;
public DateTime date;
public int offset;
}
/// See
[TLDef(0x53B22BAF)]
public class Messages_SearchResultsPositions : IObject
{
public int count;
public SearchResultsPosition[] positions;
}
/// See
[TLDef(0x8356CDA9)]
public class Channels_SendAsPeers : IObject, IPeerResolver
{
public Peer[] peers;
public Dictionary chats;
public Dictionary users;
/// returns a or for the given Peer
public IPeerInfo UserOrChat(Peer peer) => peer.UserOrChat(users, chats);
}
/// See
[TLDef(0x3B6D152E)]
public class Users_UserFull : IObject, IPeerResolver
{
public UserFull full_user;
public Dictionary chats;
public Dictionary users;
/// returns a or for the given Peer
public IPeerInfo UserOrChat(Peer peer) => peer.UserOrChat(users, chats);
}
/// See
[TLDef(0x6880B94D)]
public class Messages_PeerSettings : IObject, IPeerResolver
{
public PeerSettings settings;
public Dictionary chats;
public Dictionary users;
/// returns a or for the given Peer
public IPeerInfo UserOrChat(Peer peer) => peer.UserOrChat(users, chats);
}
/// See
[TLDef(0xC3A2835F)]
public class Auth_LoggedOut : IObject
{
public Flags flags;
[IfFlag(0)] public byte[] future_auth_token;
[Flags] public enum Flags
{
/// Field has a value
has_future_auth_token = 0x1,
}
}
/// See
[TLDef(0x6FB250D1)]
public class ReactionCount : IObject
{
public Flags flags;
public string reaction;
public int count;
[Flags] public enum Flags
{
chosen = 0x1,
}
}
/// See
[TLDef(0x087B6E36)]
public class MessageReactions : IObject
{
public Flags flags;
public ReactionCount[] results;
[IfFlag(1)] public MessageUserReaction[] recent_reactons;
[Flags] public enum Flags
{
min = 0x1,
/// Field has a value
has_recent_reactons = 0x2,
can_see_list = 0x4,
}
}
/// See
[TLDef(0x932844FA)]
public class MessageUserReaction : IObject
{
public long user_id;
public string reaction;
}
/// See
[TLDef(0xA366923C)]
public class Messages_MessageReactionsList : IObject
{
public Flags flags;
public int count;
public MessageUserReaction[] reactions;
public Dictionary users;
[IfFlag(0)] public string next_offset;
[Flags] public enum Flags
{
/// Field has a value
has_next_offset = 0x1,
}
}
/// See
[TLDef(0x021D7C4B)]
public class AvailableReaction : IObject
{
public Flags flags;
public string reaction;
public string title;
public DocumentBase static_icon;
public DocumentBase appear_animation;
public DocumentBase select_animation;
public DocumentBase activate_animation;
public DocumentBase effect_animation;
[Flags] public enum Flags
{
inactive = 0x1,
}
}
/// See
/// a null value means messages.availableReactionsNotModified
[TLDef(0x768E3AAD)]
public class Messages_AvailableReactions : IObject
{
public int hash;
public AvailableReaction[] reactions;
}
// ---functions---
public static class SchemaExtensions
{
/// Invokes a query after successfull completion of one of the previous queries. See
/// Message identifier on which a current query depends
/// The query itself
public static Task InvokeAfterMsg(this Client client, long msg_id, IMethod query)
=> client.Invoke(new InvokeAfterMsg
{
msg_id = msg_id,
query = query,
});
/// Invokes a query after a successfull completion of previous queries See
/// List of messages on which a current query depends
/// The query itself
public static Task InvokeAfterMsgs(this Client client, long[] msg_ids, IMethod query)
=> client.Invoke(new InvokeAfterMsgs
{
msg_ids = msg_ids,
query = query,
});
/// Initialize connection See Possible codes: 400 (details)
/// Application identifier (see. App configuration)
/// Device model
/// Operation system version
/// Application version
/// Code for the language used on the device's OS, ISO 639-1 standard
/// Language pack to use
/// Code for the language used on the client, ISO 639-1 standard
/// Info about an MTProto proxy
/// Additional initConnection parameters.
For now, only the tz_offset field is supported, for specifying timezone offset in seconds.
/// The query itself
public static Task InitConnection(this Client client, int api_id, string device_model, string system_version, string app_version, string system_lang_code, string lang_pack, string lang_code, IMethod query, InputClientProxy proxy = null, JSONValue params_ = null)
=> client.Invoke(new InitConnection
{
flags = (InitConnection.Flags)((proxy != null ? 0x1 : 0) | (params_ != null ? 0x2 : 0)),
api_id = api_id,
device_model = device_model,
system_version = system_version,
app_version = app_version,
system_lang_code = system_lang_code,
lang_pack = lang_pack,
lang_code = lang_code,
proxy = proxy,
params_ = params_,
query = query,
});
/// Invoke the specified query using the specified API layer See Possible codes: 400,403 (details)
/// The layer to use
/// The query
public static Task InvokeWithLayer(this Client client, int layer, IMethod query)
=> client.Invoke(new InvokeWithLayer
{
layer = layer,
query = query,
});
/// Invoke a request without subscribing the used connection for updates (this is enabled by default for file queries). See
/// The query
public static Task InvokeWithoutUpdates(this Client client, IMethod query)
=> client.Invoke(new InvokeWithoutUpdates
{
query = query,
});
/// Invoke with the given message range See
/// Message range
/// Query
public static Task InvokeWithMessagesRange(this Client client, MessageRange range, IMethod query)
=> client.Invoke(new InvokeWithMessagesRange
{
range = range,
query = query,
});
/// Invoke a method within a takeout session See
/// Takeout session ID
/// Query
public static Task InvokeWithTakeout(this Client client, long takeout_id, IMethod query)
=> client.Invoke(new InvokeWithTakeout
{
takeout_id = takeout_id,
query = query,
});
/// Send the verification code for login See Possible codes: 303,400,401,406 (details)
/// Phone number in international format
/// Application identifier (see App configuration)
/// Application secret hash (see App configuration)
/// Settings for the code type to send
public static Task Auth_SendCode(this Client client, string phone_number, int api_id, string api_hash, CodeSettings settings)
=> client.Invoke(new Auth_SendCode
{
phone_number = phone_number,
api_id = api_id,
api_hash = api_hash,
settings = settings,
});
/// Registers a validated phone number in the system. See Possible codes: 400 (details)
/// Phone number in the international format
/// SMS-message ID
/// New user first name
/// New user last name
public static Task Auth_SignUp(this Client client, string phone_number, string phone_code_hash, string first_name, string last_name)
=> client.Invoke(new Auth_SignUp
{
phone_number = phone_number,
phone_code_hash = phone_code_hash,
first_name = first_name,
last_name = last_name,
});
/// Signs in a user with a validated phone number. See Possible codes: 400 (details)
/// Phone number in the international format
/// SMS-message ID, obtained from auth.sendCode
/// Valid numerical code from the SMS-message
public static Task Auth_SignIn(this Client client, string phone_number, string phone_code_hash, string phone_code)
=> client.Invoke(new Auth_SignIn
{
phone_number = phone_number,
phone_code_hash = phone_code_hash,
phone_code = phone_code,
});
/// Logs out the user. See [bots: ✓]
public static Task Auth_LogOut(this Client client)
=> client.Invoke(new Auth_LogOut
{
});
/// Terminates all user's authorized sessions except for the current one. See Possible codes: 406 (details)
public static Task Auth_ResetAuthorizations(this Client client)
=> client.Invoke(new Auth_ResetAuthorizations
{
});
/// Returns data for copying authorization to another data-centre. See [bots: ✓] Possible codes: 400 (details)
/// Number of a target data-centre
public static Task Auth_ExportAuthorization(this Client client, int dc_id)
=> client.Invoke(new Auth_ExportAuthorization
{
dc_id = dc_id,
});
/// Logs in a user using a key transmitted from his native data-centre. See [bots: ✓] Possible codes: 400 (details)
/// User ID
/// Authorization key
public static Task Auth_ImportAuthorization(this Client client, long id, byte[] bytes)
=> client.Invoke(new Auth_ImportAuthorization
{
id = id,
bytes = bytes,
});
/// Binds a temporary authorization key temp_auth_key_id to the permanent authorization key perm_auth_key_id. Each permanent key may only be bound to one temporary key at a time, binding a new temporary key overwrites the previous one. See [bots: ✓] Possible codes: 400 (details)
/// Permanent auth_key_id to bind to
/// Random long from Binding message contents
/// Unix timestamp to invalidate temporary key, see Binding message contents
/// See Generating encrypted_message
public static Task Auth_BindTempAuthKey(this Client client, long perm_auth_key_id, long nonce, DateTime expires_at, byte[] encrypted_message)
=> client.Invoke(new Auth_BindTempAuthKey
{
perm_auth_key_id = perm_auth_key_id,
nonce = nonce,
expires_at = expires_at,
encrypted_message = encrypted_message,
});
/// Login as a bot See [bots: ✓] Possible codes: 400,401 (details)
/// Application identifier (see. App configuration)
/// Application identifier hash (see. App configuration)
/// Bot token (see bots)
public static Task Auth_ImportBotAuthorization(this Client client, int flags, int api_id, string api_hash, string bot_auth_token)
=> client.Invoke(new Auth_ImportBotAuthorization
{
flags = flags,
api_id = api_id,
api_hash = api_hash,
bot_auth_token = bot_auth_token,
});
/// Try logging to an account protected by a 2FA password. See Possible codes: 400 (details)
/// The account's password (see SRP)
public static Task Auth_CheckPassword(this Client client, InputCheckPasswordSRP password)
=> client.Invoke(new Auth_CheckPassword
{
password = password,
});
/// Request recovery code of a 2FA password, only for accounts with a recovery email configured. See Possible codes: 400 (details)
public static Task Auth_RequestPasswordRecovery(this Client client)
=> client.Invoke(new Auth_RequestPasswordRecovery
{
});
/// Reset the 2FA password using the recovery code sent using auth.requestPasswordRecovery. See Possible codes: 400 (details)
/// Code received via email
/// New password
public static Task Auth_RecoverPassword(this Client client, string code, Account_PasswordInputSettings new_settings = null)
=> client.Invoke(new Auth_RecoverPassword
{
flags = (Auth_RecoverPassword.Flags)(new_settings != null ? 0x1 : 0),
code = code,
new_settings = new_settings,
});
/// Resend the login code via another medium, the phone code type is determined by the return value of the previous auth.sendCode/auth.resendCode: see login for more info. See Possible codes: 400,406 (details)
/// The phone number
/// The phone code hash obtained from auth.sendCode
public static Task Auth_ResendCode(this Client client, string phone_number, string phone_code_hash)
=> client.Invoke(new Auth_ResendCode
{
phone_number = phone_number,
phone_code_hash = phone_code_hash,
});
/// Cancel the login verification code See Possible codes: 400 (details)
/// Phone number
/// Phone code hash from auth.sendCode
public static Task Auth_CancelCode(this Client client, string phone_number, string phone_code_hash)
=> client.Invoke(new Auth_CancelCode
{
phone_number = phone_number,
phone_code_hash = phone_code_hash,
});
/// Delete all temporary authorization keys except for the ones specified See [bots: ✓]
/// The auth keys that shouldn't be dropped.
public static Task Auth_DropTempAuthKeys(this Client client, long[] except_auth_keys)
=> client.Invoke(new Auth_DropTempAuthKeys
{
except_auth_keys = except_auth_keys,
});
/// Generate a login token, for login via QR code.
The generated login token should be encoded using base64url, then shown as a tg://login?token=base64encodedtoken URL in the QR code. See Possible codes: 400 (details)
/// Application identifier (see. App configuration)
/// Application identifier hash (see. App configuration)
/// List of already logged-in user IDs, to prevent logging in twice with the same user
public static Task Auth_ExportLoginToken(this Client client, int api_id, string api_hash, long[] except_ids)
=> client.Invoke(new Auth_ExportLoginToken
{
api_id = api_id,
api_hash = api_hash,
except_ids = except_ids,
});
/// Login using a redirected login token, generated in case of DC mismatch during QR code login. See Possible codes: 400 (details)
/// Login token
public static Task Auth_ImportLoginToken(this Client client, byte[] token)
=> client.Invoke(new Auth_ImportLoginToken
{
token = token,
});
/// Accept QR code login token, logging in the app that generated it. See Possible codes: 400 (details)
/// Login token embedded in QR code, for more info, see login via QR code.
public static Task Auth_AcceptLoginToken(this Client client, byte[] token)
=> client.Invoke(new Auth_AcceptLoginToken
{
token = token,
});
/// Check if the 2FA recovery code sent using auth.requestPasswordRecovery is valid, before passing it to auth.recoverPassword. See Possible codes: 400 (details)
/// Code received via email
public static Task Auth_CheckRecoveryPassword(this Client client, string code)
=> client.Invoke(new Auth_CheckRecoveryPassword
{
code = code,
});
/// Register device to receive PUSH notifications See Possible codes: 400 (details)
/// Avoid receiving (silent and invisible background) notifications. Useful to save battery.
/// Device token type.
Possible values:
1 - APNS (device token for apple push)
2 - FCM (firebase token for google firebase)
3 - MPNS (channel URI for microsoft push)
4 - Simple push (endpoint for firefox's simple push API)
5 - Ubuntu phone (token for ubuntu push)
6 - Blackberry (token for blackberry push)
7 - Unused
8 - WNS (windows push)
9 - APNS VoIP (token for apple push VoIP)
10 - Web push (web push, see below)
11 - MPNS VoIP (token for microsoft push VoIP)
12 - Tizen (token for tizen push)
For 10 web push, the token must be a JSON-encoded object containing the keys described in PUSH updates
/// Device token
/// If is transmitted, a sandbox-certificate will be used during transmission.
/// For FCM and APNS VoIP, optional encryption key used to encrypt push notifications
/// List of user identifiers of other users currently using the client
public static Task Account_RegisterDevice(this Client client, int token_type, string token, bool app_sandbox, byte[] secret, long[] other_uids, bool no_muted = false)
=> client.Invoke(new Account_RegisterDevice
{
flags = (Account_RegisterDevice.Flags)(no_muted ? 0x1 : 0),
token_type = token_type,
token = token,
app_sandbox = app_sandbox,
secret = secret,
other_uids = other_uids,
});
/// Deletes a device by its token, stops sending PUSH-notifications to it. See Possible codes: 400 (details)
/// Device token type.
Possible values:
1 - APNS (device token for apple push)
2 - FCM (firebase token for google firebase)
3 - MPNS (channel URI for microsoft push)
4 - Simple push (endpoint for firefox's simple push API)
5 - Ubuntu phone (token for ubuntu push)
6 - Blackberry (token for blackberry push)
7 - Unused
8 - WNS (windows push)
9 - APNS VoIP (token for apple push VoIP)
10 - Web push (web push, see below)
11 - MPNS VoIP (token for microsoft push VoIP)
12 - Tizen (token for tizen push)
For 10 web push, the token must be a JSON-encoded object containing the keys described in PUSH updates
/// Device token
/// List of user identifiers of other users currently using the client
public static Task Account_UnregisterDevice(this Client client, int token_type, string token, long[] other_uids)
=> client.Invoke(new Account_UnregisterDevice
{
token_type = token_type,
token = token,
other_uids = other_uids,
});
/// Edits notification settings from a given user/group, from all users/all groups. See Possible codes: 400 (details)
/// Notification source
/// Notification settings
public static Task Account_UpdateNotifySettings(this Client client, InputNotifyPeerBase peer, InputPeerNotifySettings settings)
=> client.Invoke(new Account_UpdateNotifySettings
{
peer = peer,
settings = settings,
});
/// Gets current notification settings for a given user/group, from all users/all groups. See Possible codes: 400 (details)
/// Notification source
public static Task Account_GetNotifySettings(this Client client, InputNotifyPeerBase peer)
=> client.Invoke(new Account_GetNotifySettings
{
peer = peer,
});
/// Resets all notification settings from users and groups. See
public static Task Account_ResetNotifySettings(this Client client)
=> client.Invoke(new Account_ResetNotifySettings
{
});
/// Updates user profile. See Possible codes: 400 (details)
/// New user first name
/// New user last name
/// New bio
public static Task Account_UpdateProfile(this Client client, string first_name = null, string last_name = null, string about = null)
=> client.Invoke(new Account_UpdateProfile
{
flags = (Account_UpdateProfile.Flags)((first_name != null ? 0x1 : 0) | (last_name != null ? 0x2 : 0) | (about != null ? 0x4 : 0)),
first_name = first_name,
last_name = last_name,
about = about,
});
/// Updates online user status. See
/// If is transmitted, user status will change to .
public static Task Account_UpdateStatus(this Client client, bool offline)
=> client.Invoke(new Account_UpdateStatus
{
offline = offline,
});
/// Returns a list of available wallpapers. See
/// Hash for pagination, for more info click here
/// a null value means account.wallPapersNotModified
public static Task Account_GetWallPapers(this Client client, long hash)
=> client.Invoke(new Account_GetWallPapers
{
hash = hash,
});
/// Report a peer for violation of telegram's Terms of Service See Possible codes: 400 (details)
/// The peer to report
/// The reason why this peer is being reported
/// Comment for report moderation
public static Task Account_ReportPeer(this Client client, InputPeer peer, ReportReason reason, string message)
=> client.Invoke(new Account_ReportPeer
{
peer = peer,
reason = reason,
message = message,
});
/// Validates a username and checks availability. See Possible codes: 400 (details)
/// username
Accepted characters: A-z (case-insensitive), 0-9 and underscores.
Length: 5-32 characters.
public static Task Account_CheckUsername(this Client client, string username)
=> client.Invoke(new Account_CheckUsername
{
username = username,
});
/// Changes username for the current user. See Possible codes: 400,401 (details)
/// username or empty string if username is to be removed
Accepted characters: a-z (case-insensitive), 0-9 and underscores.
Length: 5-32 characters.
public static Task Account_UpdateUsername(this Client client, string username)
=> client.Invoke(new Account_UpdateUsername
{
username = username,
});
/// Get privacy settings of current account See Possible codes: 400 (details)
/// Peer category whose privacy settings should be fetched
public static Task Account_GetPrivacy(this Client client, InputPrivacyKey key)
=> client.Invoke(new Account_GetPrivacy
{
key = key,
});
/// Change privacy settings of current account See Possible codes: 400 (details)
/// Peers to which the privacy rules apply
/// New privacy rules
public static Task Account_SetPrivacy(this Client client, InputPrivacyKey key, InputPrivacyRule[] rules)
=> client.Invoke(new Account_SetPrivacy
{
key = key,
rules = rules,
});
/// Delete the user's account from the telegram servers. Can be used, for example, to delete the account of a user that provided the login code, but forgot the 2FA password and no recovery method is configured. See Possible codes: 420 (details)
/// Why is the account being deleted, can be empty
public static Task Account_DeleteAccount(this Client client, string reason)
=> client.Invoke(new Account_DeleteAccount
{
reason = reason,
});
/// Get days to live of account See
public static Task Account_GetAccountTTL(this Client client)
=> client.Invoke(new Account_GetAccountTTL
{
});
/// Set account self-destruction period See Possible codes: 400 (details)
/// Time to live in days
public static Task Account_SetAccountTTL(this Client client, AccountDaysTTL ttl)
=> client.Invoke(new Account_SetAccountTTL
{
ttl = ttl,
});
/// Verify a new phone number to associate to the current account See Possible codes: 400,406 (details)
/// New phone number
/// Phone code settings
public static Task Account_SendChangePhoneCode(this Client client, string phone_number, CodeSettings settings)
=> client.Invoke(new Account_SendChangePhoneCode
{
phone_number = phone_number,
settings = settings,
});
/// Change the phone number of the current account See Possible codes: 400 (details)
/// New phone number
/// Phone code hash received when calling account.sendChangePhoneCode
/// Phone code received when calling account.sendChangePhoneCode
public static Task Account_ChangePhone(this Client client, string phone_number, string phone_code_hash, string phone_code)
=> client.Invoke(new Account_ChangePhone
{
phone_number = phone_number,
phone_code_hash = phone_code_hash,
phone_code = phone_code,
});
/// When client-side passcode lock feature is enabled, will not show message texts in incoming PUSH notifications. See
/// Inactivity period after which to start hiding message texts in PUSH notifications.
public static Task Account_UpdateDeviceLocked(this Client client, int period)
=> client.Invoke(new Account_UpdateDeviceLocked
{
period = period,
});
/// Get logged-in sessions See
public static Task Account_GetAuthorizations(this Client client)
=> client.Invoke(new Account_GetAuthorizations
{
});
/// Log out an active authorized session by its hash See Possible codes: 400,406 (details)
/// Session hash
public static Task Account_ResetAuthorization(this Client client, long hash)
=> client.Invoke(new Account_ResetAuthorization
{
hash = hash,
});
/// Obtain configuration for two-factor authorization with password See
public static Task Account_GetPassword(this Client client)
=> client.Invoke(new Account_GetPassword
{
});
/// Get private info associated to the password info (recovery email, telegram passport info & so on) See Possible codes: 400 (details)
/// The password (see SRP)
public static Task Account_GetPasswordSettings(this Client client, InputCheckPasswordSRP password)
=> client.Invoke(new Account_GetPasswordSettings
{
password = password,
});
/// Set a new 2FA password See Possible codes: 400 (details)
/// The old password (see SRP)
/// The new password (see SRP)
public static Task Account_UpdatePasswordSettings(this Client client, InputCheckPasswordSRP password, Account_PasswordInputSettings new_settings)
=> client.Invoke(new Account_UpdatePasswordSettings
{
password = password,
new_settings = new_settings,
});
/// Send confirmation code to cancel account deletion, for more info click here » See Possible codes: 400 (details)
/// The hash from the service notification, for more info click here »
/// Phone code settings
public static Task Account_SendConfirmPhoneCode(this Client client, string hash, CodeSettings settings)
=> client.Invoke(new Account_SendConfirmPhoneCode
{
hash = hash,
settings = settings,
});
/// Confirm a phone number to cancel account deletion, for more info click here » See Possible codes: 400 (details)
/// Phone code hash, for more info click here »
/// SMS code, for more info click here »
public static Task Account_ConfirmPhone(this Client client, string phone_code_hash, string phone_code)
=> client.Invoke(new Account_ConfirmPhone
{
phone_code_hash = phone_code_hash,
phone_code = phone_code,
});
/// Get temporary payment password See Possible codes: 400 (details)
/// SRP password parameters
/// Time during which the temporary password will be valid, in seconds; should be between 60 and 86400
public static Task Account_GetTmpPassword(this Client client, InputCheckPasswordSRP password, int period)
=> client.Invoke(new Account_GetTmpPassword
{
password = password,
period = period,
});
/// Get web login widget authorizations See
public static Task Account_GetWebAuthorizations(this Client client)
=> client.Invoke(new Account_GetWebAuthorizations
{
});
/// Log out an active web telegram login session See Possible codes: 400 (details)
/// hash
public static Task Account_ResetWebAuthorization(this Client client, long hash)
=> client.Invoke(new Account_ResetWebAuthorization
{
hash = hash,
});
/// Reset all active web telegram login sessions See
public static Task Account_ResetWebAuthorizations(this Client client)
=> client.Invoke(new Account_ResetWebAuthorizations
{
});
/// Get all saved Telegram Passport documents, for more info see the passport docs » See
public static Task Account_GetAllSecureValues(this Client client)
=> client.Invoke(new Account_GetAllSecureValues
{
});
/// Get saved Telegram Passport document, for more info see the passport docs » See
/// Requested value types
public static Task Account_GetSecureValue(this Client client, SecureValueType[] types)
=> client.Invoke(new Account_GetSecureValue
{
types = types,
});
/// Securely save Telegram Passport document, for more info see the passport docs » See Possible codes: 400 (details)
/// Secure value, for more info see the passport docs »
/// Passport secret hash, for more info see the passport docs »
public static Task Account_SaveSecureValue(this Client client, InputSecureValue value, long secure_secret_id)
=> client.Invoke(new Account_SaveSecureValue
{
value = value,
secure_secret_id = secure_secret_id,
});
/// Delete stored Telegram Passport documents, for more info see the passport docs » See
/// Document types to delete
public static Task Account_DeleteSecureValue(this Client client, SecureValueType[] types)
=> client.Invoke(new Account_DeleteSecureValue
{
types = types,
});
/// Returns a Telegram Passport authorization form for sharing data with a service See Possible codes: 400 (details)
/// User identifier of the service's bot
/// Telegram Passport element types requested by the service
/// Service's public key
public static Task Account_GetAuthorizationForm(this Client client, long bot_id, string scope, string public_key)
=> client.Invoke(new Account_GetAuthorizationForm
{
bot_id = bot_id,
scope = scope,
public_key = public_key,
});
/// Sends a Telegram Passport authorization form, effectively sharing data with the service See
/// Bot ID
/// Telegram Passport element types requested by the service
/// Service's public key
/// Types of values sent and their hashes
/// Encrypted values
public static Task Account_AcceptAuthorization(this Client client, long bot_id, string scope, string public_key, SecureValueHash[] value_hashes, SecureCredentialsEncrypted credentials)
=> client.Invoke(new Account_AcceptAuthorization
{
bot_id = bot_id,
scope = scope,
public_key = public_key,
value_hashes = value_hashes,
credentials = credentials,
});
/// Send the verification phone code for telegram passport. See Possible codes: 400 (details)
/// The phone number to verify
/// Phone code settings
public static Task Account_SendVerifyPhoneCode(this Client client, string phone_number, CodeSettings settings)
=> client.Invoke(new Account_SendVerifyPhoneCode
{
phone_number = phone_number,
settings = settings,
});
/// Verify a phone number for telegram passport. See Possible codes: 400 (details)
/// Phone number
/// Phone code hash received from the call to account.sendVerifyPhoneCode
/// Code received after the call to account.sendVerifyPhoneCode
public static Task Account_VerifyPhone(this Client client, string phone_number, string phone_code_hash, string phone_code)
=> client.Invoke(new Account_VerifyPhone
{
phone_number = phone_number,
phone_code_hash = phone_code_hash,
phone_code = phone_code,
});
/// Send the verification email code for telegram passport. See Possible codes: 400 (details)
/// The email where to send the code
public static Task Account_SendVerifyEmailCode(this Client client, string email)
=> client.Invoke(new Account_SendVerifyEmailCode
{
email = email,
});
/// Verify an email address for telegram passport. See Possible codes: 400 (details)
/// The email to verify
/// The verification code that was received
public static Task Account_VerifyEmail(this Client client, string email, string code)
=> client.Invoke(new Account_VerifyEmail
{
email = email,
code = code,
});
/// Initialize account takeout session See Possible codes: 420 (details)
/// Whether to export contacts
/// Whether to export messages in private chats
/// Whether to export messages in legacy groups
/// Whether to export messages in supergroups
/// Whether to export messages in channels
/// Whether to export files
/// Maximum size of files to export
public static Task 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)
=> 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)),
file_max_size = file_max_size.GetValueOrDefault(),
});
/// Finish account takeout session See Possible codes: 403 (details)
/// Data exported successfully
public static Task Account_FinishTakeoutSession(this Client client, bool success = false)
=> client.Invoke(new Account_FinishTakeoutSession
{
flags = (Account_FinishTakeoutSession.Flags)(success ? 0x1 : 0),
});
/// Verify an email to use as 2FA recovery method. See Possible codes: 400 (details)
/// The phone code that was received after setting a recovery email
public static Task Account_ConfirmPasswordEmail(this Client client, string code)
=> client.Invoke(new Account_ConfirmPasswordEmail
{
code = code,
});
/// Resend the code to verify an email to use as 2FA recovery method. See
public static Task Account_ResendPasswordEmail(this Client client)
=> client.Invoke(new Account_ResendPasswordEmail
{
});
/// Cancel the code that was sent to verify an email to use as 2FA recovery method. See
public static Task Account_CancelPasswordEmail(this Client client)
=> client.Invoke(new Account_CancelPasswordEmail
{
});
/// Whether the user will receive notifications when contacts sign up See
public static Task Account_GetContactSignUpNotification(this Client client)
=> client.Invoke(new Account_GetContactSignUpNotification
{
});
/// Toggle contact sign up notifications See
/// Whether to disable contact sign up notifications
public static Task Account_SetContactSignUpNotification(this Client client, bool silent)
=> client.Invoke(new Account_SetContactSignUpNotification
{
silent = silent,
});
/// Returns list of chats with non-default notification settings See
/// If true, chats with non-default sound will also be returned
/// If specified, only chats of the specified category will be returned
public static Task Account_GetNotifyExceptions(this Client client, bool compare_sound = false, InputNotifyPeerBase peer = null)
=> client.Invoke(new Account_GetNotifyExceptions
{
flags = (Account_GetNotifyExceptions.Flags)((compare_sound ? 0x2 : 0) | (peer != null ? 0x1 : 0)),
peer = peer,
});
/// Get info about a certain wallpaper See Possible codes: 400 (details)
/// The wallpaper to get info about
public static Task Account_GetWallPaper(this Client client, InputWallPaperBase wallpaper)
=> client.Invoke(new Account_GetWallPaper
{
wallpaper = wallpaper,
});
/// Create and upload a new wallpaper See Possible codes: 400 (details)
/// The JPG/PNG wallpaper
/// MIME type of uploaded wallpaper
/// Wallpaper settings
public static Task Account_UploadWallPaper(this Client client, InputFileBase file, string mime_type, WallPaperSettings settings)
=> client.Invoke(new Account_UploadWallPaper
{
file = file,
mime_type = mime_type,
settings = settings,
});
/// Install/uninstall wallpaper See Possible codes: 400 (details)
/// Wallpaper to save
/// Uninstall wallpaper?
/// Wallpaper settings
public static Task Account_SaveWallPaper(this Client client, InputWallPaperBase wallpaper, bool unsave, WallPaperSettings settings)
=> client.Invoke(new Account_SaveWallPaper
{
wallpaper = wallpaper,
unsave = unsave,
settings = settings,
});
/// Install wallpaper See Possible codes: 400 (details)
/// Wallpaper to install
/// Wallpaper settings
public static Task Account_InstallWallPaper(this Client client, InputWallPaperBase wallpaper, WallPaperSettings settings)
=> client.Invoke(new Account_InstallWallPaper
{
wallpaper = wallpaper,
settings = settings,
});
/// Delete installed wallpapers See
public static Task Account_ResetWallPapers(this Client client)
=> client.Invoke(new Account_ResetWallPapers
{
});
/// Get media autodownload settings See
public static Task Account_GetAutoDownloadSettings(this Client client)
=> client.Invoke(new Account_GetAutoDownloadSettings
{
});
/// Change media autodownload settings See
/// Whether to save settings in the low data usage preset
/// Whether to save settings in the high data usage preset
/// Media autodownload settings
public static Task Account_SaveAutoDownloadSettings(this Client client, AutoDownloadSettings settings, bool low = false, bool high = false)
=> client.Invoke(new Account_SaveAutoDownloadSettings
{
flags = (Account_SaveAutoDownloadSettings.Flags)((low ? 0x1 : 0) | (high ? 0x2 : 0)),
settings = settings,
});
/// Upload theme See Possible codes: 400 (details)
/// Theme file uploaded as described in files »
/// Thumbnail
/// File name
/// MIME type, must be application/x-tgtheme-{format}, where format depends on the client
public static Task Account_UploadTheme(this Client client, InputFileBase file, string file_name, string mime_type, InputFileBase thumb = null)
=> client.Invoke(new Account_UploadTheme
{
flags = (Account_UploadTheme.Flags)(thumb != null ? 0x1 : 0),
file = file,
thumb = thumb,
file_name = file_name,
mime_type = mime_type,
});
/// Create a theme See Possible codes: 400 (details)
/// Unique theme ID
/// Theme name
/// Theme file
/// Theme settings
public static Task Account_CreateTheme(this Client client, string slug, string title, InputDocument document = null, InputThemeSettings[] settings = null)
=> client.Invoke(new Account_CreateTheme
{
flags = (Account_CreateTheme.Flags)((document != null ? 0x4 : 0) | (settings != null ? 0x8 : 0)),
slug = slug,
title = title,
document = document,
settings = settings,
});
/// Update theme See Possible codes: 400 (details)
/// Theme format, a string that identifies the theming engines supported by the client
/// Theme to update
/// Unique theme ID
/// Theme name
/// Theme file
/// Theme settings
public static Task Account_UpdateTheme(this Client client, string format, InputThemeBase theme, string slug = null, string title = null, InputDocument document = null, InputThemeSettings[] settings = null)
=> client.Invoke(new Account_UpdateTheme
{
flags = (Account_UpdateTheme.Flags)((slug != null ? 0x1 : 0) | (title != null ? 0x2 : 0) | (document != null ? 0x4 : 0) | (settings != null ? 0x8 : 0)),
format = format,
theme = theme,
slug = slug,
title = title,
document = document,
settings = settings,
});
/// Save a theme See
/// Theme to save
/// Unsave
public static Task Account_SaveTheme(this Client client, InputThemeBase theme, bool unsave)
=> client.Invoke(new Account_SaveTheme
{
theme = theme,
unsave = unsave,
});
/// Install a theme See
/// Whether to install the dark version
/// Theme format, a string that identifies the theming engines supported by the client
/// Theme to install
public static Task Account_InstallTheme(this Client client, bool dark = false, InputThemeBase theme = null, string format = null, BaseTheme base_theme = default)
=> client.Invoke(new Account_InstallTheme
{
flags = (Account_InstallTheme.Flags)((dark ? 0x1 : 0) | (theme != null ? 0x2 : 0) | (format != null ? 0x4 : 0) | (base_theme != default ? 0x8 : 0)),
theme = theme,
format = format,
base_theme = base_theme,
});
/// Get theme information See Possible codes: 400 (details)
/// Theme format, a string that identifies the theming engines supported by the client
/// Theme
/// Document ID
public static Task Account_GetTheme(this Client client, string format, InputThemeBase theme, long document_id)
=> client.Invoke(new Account_GetTheme
{
format = format,
theme = theme,
document_id = document_id,
});
/// Get installed themes See
/// Theme format, a string that identifies the theming engines supported by the client
/// Hash for pagination, for more info click here
/// a null value means account.themesNotModified
public static Task Account_GetThemes(this Client client, string format, long hash)
=> client.Invoke(new Account_GetThemes
{
format = format,
hash = hash,
});
/// Set sensitive content settings (for viewing or hiding NSFW content) See Possible codes: 403 (details)
/// Enable NSFW content
public static Task Account_SetContentSettings(this Client client, bool sensitive_enabled = false)
=> client.Invoke(new Account_SetContentSettings
{
flags = (Account_SetContentSettings.Flags)(sensitive_enabled ? 0x1 : 0),
});
/// Get sensitive content settings See
public static Task Account_GetContentSettings(this Client client)
=> client.Invoke(new Account_GetContentSettings
{
});
/// Get info about multiple wallpapers See
/// Wallpapers to fetch info about
public static Task Account_GetMultiWallPapers(this Client client, InputWallPaperBase[] wallpapers)
=> client.Invoke(new Account_GetMultiWallPapers
{
wallpapers = wallpapers,
});
/// Get global privacy settings See
public static Task Account_GetGlobalPrivacySettings(this Client client)
=> client.Invoke(new Account_GetGlobalPrivacySettings
{
});
/// Set global privacy settings See Possible codes: 400 (details)
/// Global privacy settings
public static Task Account_SetGlobalPrivacySettings(this Client client, GlobalPrivacySettings settings)
=> client.Invoke(new Account_SetGlobalPrivacySettings
{
settings = settings,
});
/// Report a profile photo of a dialog See
/// The dialog
/// Dialog photo ID
/// Report reason
/// Comment for report moderation
public static Task Account_ReportProfilePhoto(this Client client, InputPeer peer, InputPhoto photo_id, ReportReason reason, string message)
=> client.Invoke(new Account_ReportProfilePhoto
{
peer = peer,
photo_id = photo_id,
reason = reason,
message = message,
});
/// Initiate a 2FA password reset: can only be used if the user is already logged-in, see here for more info » See
public static Task Account_ResetPassword(this Client client)
=> client.Invoke(new Account_ResetPassword
{
});
/// Abort a pending 2FA password reset, see here for more info » See Possible codes: 400 (details)
public static Task Account_DeclinePasswordReset(this Client client)
=> client.Invoke(new Account_DeclinePasswordReset
{
});
/// Get all available chat themes See
/// Hash for pagination, for more info click here
/// a null value means account.themesNotModified
public static Task Account_GetChatThemes(this Client client, long hash)
=> client.Invoke(new Account_GetChatThemes
{
hash = hash,
});
/// See
public static Task Account_SetAuthorizationTTL(this Client client, int authorization_ttl_days)
=> client.Invoke(new Account_SetAuthorizationTTL
{
authorization_ttl_days = authorization_ttl_days,
});
/// See
public static Task Account_ChangeAuthorizationSettings(this Client client, long hash, bool? encrypted_requests_disabled = default, bool? call_requests_disabled = default)
=> client.Invoke(new Account_ChangeAuthorizationSettings
{
flags = (Account_ChangeAuthorizationSettings.Flags)((encrypted_requests_disabled != default ? 0x1 : 0) | (call_requests_disabled != default ? 0x2 : 0)),
hash = hash,
encrypted_requests_disabled = encrypted_requests_disabled.GetValueOrDefault(),
call_requests_disabled = call_requests_disabled.GetValueOrDefault(),
});
/// Returns basic user info according to their identifiers. See [bots: ✓] Possible codes: 400,401 (details)
/// List of user identifiers
public static Task Users_GetUsers(this Client client, InputUserBase[] id)
=> client.Invoke(new Users_GetUsers
{
id = id,
});
/// Returns extended user info by ID. See [bots: ✓] Possible codes: 400 (details)
/// User ID
public static Task Users_GetFullUser(this Client client, InputUserBase id)
=> client.Invoke(new Users_GetFullUser
{
id = id,
});
/// Notify the user that the sent passport data contains some errors The user will not be able to re-submit their Passport data to you until the errors are fixed (the contents of the field for which you returned the error must change). See [bots: ✓] Possible codes: 400 (details)
/// The user
/// Errors
public static Task Users_SetSecureValueErrors(this Client client, InputUserBase id, SecureValueErrorBase[] errors)
=> client.Invoke(new Users_SetSecureValueErrors
{
id = id,
errors = errors,
});
/// Get contact by telegram IDs See
/// Hash for pagination, for more info click here
public static Task Contacts_GetContactIDs(this Client client, long hash)
=> client.Invoke(new Contacts_GetContactIDs
{
hash = hash,
});
/// Returns the list of contact statuses. See
public static Task Contacts_GetStatuses(this Client client)
=> client.Invoke(new Contacts_GetStatuses
{
});
/// Returns the current user's contact list. See
/// If there already is a full contact list on the client, a hash of a the list of contact IDs in ascending order may be passed in this parameter. If the contact set was not changed, will be returned.
/// a null value means contacts.contactsNotModified
public static Task Contacts_GetContacts(this Client client, long hash)
=> client.Invoke(new Contacts_GetContacts
{
hash = hash,
});
/// Imports contacts: saves a full list on the server, adds already registered contacts to the contact list, returns added contacts and their info. See
/// List of contacts to import
public static Task Contacts_ImportContacts(this Client client, InputContact[] contacts)
=> client.Invoke(new Contacts_ImportContacts
{
contacts = contacts,
});
/// Deletes several contacts from the list. See
/// User ID list
public static Task Contacts_DeleteContacts(this Client client, InputUserBase[] id)
=> client.Invoke(new Contacts_DeleteContacts
{
id = id,
});
/// Delete contacts by phone number See
/// Phone numbers
public static Task Contacts_DeleteByPhones(this Client client, string[] phones)
=> client.Invoke(new Contacts_DeleteByPhones
{
phones = phones,
});
/// Adds the user to the blacklist. See Possible codes: 400 (details)
/// User ID
public static Task Contacts_Block(this Client client, InputPeer id)
=> client.Invoke(new Contacts_Block
{
id = id,
});
/// Deletes the user from the blacklist. See Possible codes: 400 (details)
/// User ID
public static Task Contacts_Unblock(this Client client, InputPeer id)
=> client.Invoke(new Contacts_Unblock
{
id = id,
});
/// Returns the list of blocked users. See
/// The number of list elements to be skipped
/// The number of list elements to be returned
public static Task Contacts_GetBlocked(this Client client, int offset, int limit)
=> client.Invoke(new Contacts_GetBlocked
{
offset = offset,
limit = limit,
});
/// Returns users found by username substring. See Possible codes: 400 (details)
/// Target substring
/// Maximum number of users to be returned
public static Task Contacts_Search(this Client client, string q, int limit)
=> client.Invoke(new Contacts_Search
{
q = q,
limit = limit,
});
/// Resolve a @username to get peer info See [bots: ✓] Possible codes: 400,401 (details)
/// @username to resolve
public static Task Contacts_ResolveUsername(this Client client, string username)
=> client.Invoke(new Contacts_ResolveUsername
{
username = username,
});
/// Get most used peers See Possible codes: 400 (details)
/// Users we've chatted most frequently with
/// Most used bots
/// Most used inline bots
/// Most frequently called users
/// Users to which the users often forwards messages to
/// Chats to which the users often forwards messages to
/// Often-opened groups and supergroups
/// Most frequently visited channels
/// Offset for pagination
/// Maximum number of results to return, see pagination
/// Hash for pagination, for more info click here
/// a null value means contacts.topPeersNotModified
public static Task Contacts_GetTopPeers(this Client client, int offset, int limit, long hash, bool correspondents = false, bool bots_pm = false, bool bots_inline = false, bool phone_calls = false, bool forward_users = false, bool forward_chats = false, bool groups = false, bool channels = false)
=> client.Invoke(new Contacts_GetTopPeers
{
flags = (Contacts_GetTopPeers.Flags)((correspondents ? 0x1 : 0) | (bots_pm ? 0x2 : 0) | (bots_inline ? 0x4 : 0) | (phone_calls ? 0x8 : 0) | (forward_users ? 0x10 : 0) | (forward_chats ? 0x20 : 0) | (groups ? 0x400 : 0) | (channels ? 0x8000 : 0)),
offset = offset,
limit = limit,
hash = hash,
});
/// Reset rating of top peer See Possible codes: 400 (details)
/// Top peer category
/// Peer whose rating should be reset
public static Task Contacts_ResetTopPeerRating(this Client client, TopPeerCategory category, InputPeer peer)
=> client.Invoke(new Contacts_ResetTopPeerRating
{
category = category,
peer = peer,
});
/// Delete saved contacts See
public static Task Contacts_ResetSaved(this Client client)
=> client.Invoke(new Contacts_ResetSaved
{
});
/// Get all contacts See Possible codes: 403 (details)
public static Task Contacts_GetSaved(this Client client)
=> client.Invoke(new Contacts_GetSaved
{
});
/// Enable/disable top peers See
/// Enable/disable
public static Task Contacts_ToggleTopPeers(this Client client, bool enabled)
=> client.Invoke(new Contacts_ToggleTopPeers
{
enabled = enabled,
});
/// Add an existing telegram user as contact. See Possible codes: 400 (details)
/// Allow the other user to see our phone number?
/// Telegram ID of the other user
/// First name
/// Last name
/// User's phone number
public static Task Contacts_AddContact(this Client client, InputUserBase id, string first_name, string last_name, string phone, bool add_phone_privacy_exception = false)
=> client.Invoke(new Contacts_AddContact
{
flags = (Contacts_AddContact.Flags)(add_phone_privacy_exception ? 0x1 : 0),
id = id,
first_name = first_name,
last_name = last_name,
phone = phone,
});
/// If the of a new user allow us to add him as contact, add that user as contact See Possible codes: 400 (details)
/// The user to add as contact
public static Task Contacts_AcceptContact(this Client client, InputUserBase id)
=> client.Invoke(new Contacts_AcceptContact
{
id = id,
});
/// Get contacts near you See Possible codes: 400,406 (details)
/// While the geolocation of the current user is public, clients should update it in the background every half-an-hour or so, while setting this flag.
Do this only if the new location is more than 1 KM away from the previous one, or if the previous location is unknown.
/// Geolocation
/// If set, the geolocation of the current user will be public for the specified number of seconds; pass 0x7fffffff to disable expiry, 0 to make the current geolocation private; if the flag isn't set, no changes will be applied.
public static Task Contacts_GetLocated(this Client client, InputGeoPoint geo_point, bool background = false, int? self_expires = null)
=> client.Invoke(new Contacts_GetLocated
{
flags = (Contacts_GetLocated.Flags)((background ? 0x2 : 0) | (self_expires != null ? 0x1 : 0)),
geo_point = geo_point,
self_expires = self_expires.GetValueOrDefault(),
});
/// Stop getting notifications about thread replies of a certain user in @replies See
/// Whether to delete the specified message as well
/// Whether to delete all @replies messages from this user as well
/// Whether to also report this user for spam
/// ID of the message in the @replies chat
public static Task Contacts_BlockFromReplies(this Client client, int msg_id, bool delete_message = false, bool delete_history = false, bool report_spam = false)
=> client.Invoke(new Contacts_BlockFromReplies
{
flags = (Contacts_BlockFromReplies.Flags)((delete_message ? 0x1 : 0) | (delete_history ? 0x2 : 0) | (report_spam ? 0x4 : 0)),
msg_id = msg_id,
});
/// Returns the list of messages by their IDs. See [bots: ✓]
/// Message ID list
public static Task Messages_GetMessages(this Client client, InputMessage[] id)
=> client.Invoke(new Messages_GetMessages
{
id = id,
});
/// Returns the current user dialog list. See Possible codes: 400 (details)
/// Exclude pinned dialogs
/// Peer folder ID, for more info click here
/// Offsets for pagination, for more info click here
/// Offsets for pagination, for more info click here
/// Offset peer for pagination
/// Number of list elements to be returned
/// Hash for pagination, for more info click here
public static Task Messages_GetDialogs(this Client client, DateTime offset_date, int offset_id, InputPeer offset_peer, int limit, long hash, bool exclude_pinned = false, int? folder_id = null)
=> client.Invoke(new Messages_GetDialogs
{
flags = (Messages_GetDialogs.Flags)((exclude_pinned ? 0x1 : 0) | (folder_id != null ? 0x2 : 0)),
folder_id = folder_id.GetValueOrDefault(),
offset_date = offset_date,
offset_id = offset_id,
offset_peer = offset_peer,
limit = limit,
hash = hash,
});
/// Gets back the conversation history with one interlocutor / within a chat See Possible codes: 400,401 (details)
/// Target peer
/// Only return messages starting from the specified message ID
/// Only return messages sent before the specified date
/// Number of list elements to be skipped, negative values are also accepted.
/// Number of results to return
/// If a positive value was transferred, the method will return only messages with IDs less than max_id
/// If a positive value was transferred, the method will return only messages with IDs more than min_id
/// Result hash
public static Task Messages_GetHistory(this Client client, InputPeer peer, int offset_id, DateTime offset_date, int add_offset, int limit, int max_id, int min_id, long hash)
=> client.Invoke(new Messages_GetHistory
{
peer = peer,
offset_id = offset_id,
offset_date = offset_date,
add_offset = add_offset,
limit = limit,
max_id = max_id,
min_id = min_id,
hash = hash,
});
/// Gets back found messages See Possible codes: 400 (details)
/// User or chat, histories with which are searched, or constructor for global search
/// Text search request
/// Only return messages sent by the specified user ID
/// Thread ID
/// Filter to return only specified message types
/// If a positive value was transferred, only messages with a sending date bigger than the transferred one will be returned
/// If a positive value was transferred, only messages with a sending date smaller than the transferred one will be returned
/// Only return messages starting from the specified message ID
/// Additional offset
/// Number of results to return
/// Maximum message ID to return
/// Minimum message ID to return
/// Hash
public static Task Messages_Search(this Client client, InputPeer peer, string q, MessagesFilter filter, DateTime min_date, DateTime max_date, int offset_id, int add_offset, int limit, int max_id, int min_id, long hash, InputPeer from_id = null, int? top_msg_id = null)
=> client.Invoke(new Messages_Search
{
flags = (Messages_Search.Flags)((from_id != null ? 0x1 : 0) | (top_msg_id != null ? 0x2 : 0)),
peer = peer,
q = q,
from_id = from_id,
top_msg_id = top_msg_id.GetValueOrDefault(),
filter = filter,
min_date = min_date,
max_date = max_date,
offset_id = offset_id,
add_offset = add_offset,
limit = limit,
max_id = max_id,
min_id = min_id,
hash = hash,
});
/// Marks message history as read. See Possible codes: 400 (details)
/// Target user or group
/// If a positive value is passed, only messages with identifiers less or equal than the given one will be read
public static Task Messages_ReadHistory(this Client client, InputPeer peer, int max_id)
=> client.Invoke(new Messages_ReadHistory
{
peer = peer,
max_id = max_id,
});
/// Deletes communication history. See Possible codes: 400 (details)
/// Just clear history for the current user, without actually removing messages for every chat user
/// Whether to delete the message history for all chat participants
/// User or chat, communication history of which will be deleted
/// Maximum ID of message to delete
public static Task Messages_DeleteHistory(this Client client, InputPeer peer, int max_id, bool just_clear = false, bool revoke = false, DateTime? min_date = null, DateTime? max_date = null)
=> client.Invoke(new Messages_DeleteHistory
{
flags = (Messages_DeleteHistory.Flags)((just_clear ? 0x1 : 0) | (revoke ? 0x2 : 0) | (min_date != null ? 0x4 : 0) | (max_date != null ? 0x8 : 0)),
peer = peer,
max_id = max_id,
min_date = min_date.GetValueOrDefault(),
max_date = max_date.GetValueOrDefault(),
});
/// Deletes messages by their identifiers. See [bots: ✓] Possible codes: 403 (details)
/// Whether to delete messages for all participants of the chat
/// Message ID list
public static Task Messages_DeleteMessages(this Client client, int[] id, bool revoke = false)
=> client.Invoke(new Messages_DeleteMessages
{
flags = (Messages_DeleteMessages.Flags)(revoke ? 0x1 : 0),
id = id,
});
/// Confirms receipt of messages by a client, cancels PUSH-notification sending. See
/// Maximum message ID available in a client.
public static Task Messages_ReceivedMessages(this Client client, int max_id)
=> client.Invoke(new Messages_ReceivedMessages
{
max_id = max_id,
});
/// Sends a current user typing event (see for all event types) to a conversation partner or group. See [bots: ✓] Possible codes: 400,403 (details)
/// Target user or group
/// Thread ID
/// Type of action
Parameter added in Layer 17.
public static Task Messages_SetTyping(this Client client, InputPeer peer, SendMessageAction action, int? top_msg_id = null)
=> client.Invoke(new Messages_SetTyping
{
flags = (Messages_SetTyping.Flags)(top_msg_id != null ? 0x1 : 0),
peer = peer,
top_msg_id = top_msg_id.GetValueOrDefault(),
action = action,
});
/// Sends a message to a chat See [bots: ✓] Possible codes: 400,401,403,420 (details)
/// Set this flag to disable generation of the webpage preview
/// Send this message silently (no notifications for the receivers)
/// Send this message as background message
/// Clear the draft field
/// The destination where the message will be sent
/// The message ID to which this message will reply to
/// The message
/// Unique client message ID required to prevent message resending
/// Reply markup for sending bot buttons
/// Message entities for sending styled text
/// Scheduled message date for scheduled messages
public static Task Messages_SendMessage(this Client client, InputPeer peer, string message, long random_id, bool no_webpage = false, bool silent = false, bool background = false, bool clear_draft = false, bool noforwards = false, int? reply_to_msg_id = null, ReplyMarkup reply_markup = null, MessageEntity[] entities = null, DateTime? schedule_date = null, InputPeer send_as = null)
=> client.Invoke(new Messages_SendMessage
{
flags = (Messages_SendMessage.Flags)((no_webpage ? 0x2 : 0) | (silent ? 0x20 : 0) | (background ? 0x40 : 0) | (clear_draft ? 0x80 : 0) | (noforwards ? 0x4000 : 0) | (reply_to_msg_id != null ? 0x1 : 0) | (reply_markup != null ? 0x4 : 0) | (entities != null ? 0x8 : 0) | (schedule_date != null ? 0x400 : 0) | (send_as != null ? 0x2000 : 0)),
peer = peer,
reply_to_msg_id = reply_to_msg_id.GetValueOrDefault(),
message = message,
random_id = random_id,
reply_markup = reply_markup,
entities = entities,
schedule_date = schedule_date.GetValueOrDefault(),
send_as = send_as,
});
/// Send a media See [bots: ✓] Possible codes: 400,403,420 (details)
/// Send message silently (no notification should be triggered)
/// Send message in background
/// Clear the draft
/// Destination
/// Message ID to which this message should reply to
/// Attached media
/// Caption
/// Random ID to avoid resending the same message
/// Reply markup for bot keyboards
/// Message entities for styled text
/// Scheduled message date for scheduled messages
public static Task Messages_SendMedia(this Client client, InputPeer peer, InputMedia media, string message, long random_id, bool silent = false, bool background = false, bool clear_draft = false, bool noforwards = false, int? reply_to_msg_id = null, ReplyMarkup reply_markup = null, MessageEntity[] entities = null, DateTime? schedule_date = null, InputPeer send_as = null)
=> client.Invoke(new Messages_SendMedia
{
flags = (Messages_SendMedia.Flags)((silent ? 0x20 : 0) | (background ? 0x40 : 0) | (clear_draft ? 0x80 : 0) | (noforwards ? 0x4000 : 0) | (reply_to_msg_id != null ? 0x1 : 0) | (reply_markup != null ? 0x4 : 0) | (entities != null ? 0x8 : 0) | (schedule_date != null ? 0x400 : 0) | (send_as != null ? 0x2000 : 0)),
peer = peer,
reply_to_msg_id = reply_to_msg_id.GetValueOrDefault(),
media = media,
message = message,
random_id = random_id,
reply_markup = reply_markup,
entities = entities,
schedule_date = schedule_date.GetValueOrDefault(),
send_as = send_as,
});
/// Forwards messages by their IDs. See [bots: ✓] Possible codes: 400,403,420 (details)
/// Whether to send messages silently (no notification will be triggered on the destination clients)
/// Whether to send the message in background
/// When forwarding games, whether to include your score in the game
/// Whether to forward messages without quoting the original author
/// Whether to strip captions from media
/// Source of messages
/// IDs of messages
/// Random ID to prevent resending of messages
/// Destination peer
/// Scheduled message date for scheduled messages
public static Task Messages_ForwardMessages(this Client client, InputPeer from_peer, int[] id, long[] random_id, InputPeer to_peer, bool silent = false, bool background = false, bool with_my_score = false, bool drop_author = false, bool drop_media_captions = false, bool noforwards = false, DateTime? schedule_date = null, InputPeer send_as = null)
=> client.Invoke(new Messages_ForwardMessages
{
flags = (Messages_ForwardMessages.Flags)((silent ? 0x20 : 0) | (background ? 0x40 : 0) | (with_my_score ? 0x100 : 0) | (drop_author ? 0x800 : 0) | (drop_media_captions ? 0x1000 : 0) | (noforwards ? 0x4000 : 0) | (schedule_date != null ? 0x400 : 0) | (send_as != null ? 0x2000 : 0)),
from_peer = from_peer,
id = id,
random_id = random_id,
to_peer = to_peer,
schedule_date = schedule_date.GetValueOrDefault(),
send_as = send_as,
});
/// Report a new incoming chat for spam, if the of the chat allow us to do that See Possible codes: 400 (details)
/// Peer to report
public static Task Messages_ReportSpam(this Client client, InputPeer peer)
=> client.Invoke(new Messages_ReportSpam
{
peer = peer,
});
/// Get peer settings See Possible codes: 400 (details)
/// The peer
public static Task Messages_GetPeerSettings(this Client client, InputPeer peer)
=> client.Invoke(new Messages_GetPeerSettings
{
peer = peer,
});
/// Report a message in a chat for violation of telegram's Terms of Service See Possible codes: 400 (details)
/// Peer
/// IDs of messages to report
/// Why are these messages being reported
/// Comment for report moderation
public static Task Messages_Report(this Client client, InputPeer peer, int[] id, ReportReason reason, string message)
=> client.Invoke(new Messages_Report
{
peer = peer,
id = id,
reason = reason,
message = message,
});
/// Returns chat basic info on their IDs. See [bots: ✓] Possible codes: 400 (details)
/// List of chat IDs
public static Task Messages_GetChats(this Client client, long[] id)
=> client.Invoke(new Messages_GetChats
{
id = id,
});
/// ⚠ This method is only for small private Chat. See Terminology to understand what this means
Search for a similar method name starting with Channels_ if you're dealing with a Returns full chat info according to its ID. See [bots: ✓] Possible codes: 400 (details)
/// Chat ID
public static Task Messages_GetFullChat(this Client client, long chat_id)
=> client.Invoke(new Messages_GetFullChat
{
chat_id = chat_id,
});
/// ⚠ This method is only for small private Chat. See Terminology to understand what this means
Search for a similar method name starting with Channels_ if you're dealing with a Chanages chat name and sends a service message on it. See [bots: ✓] Possible codes: 400 (details)
/// Chat ID
/// New chat name, different from the old one
public static Task Messages_EditChatTitle(this Client client, long chat_id, string title)
=> client.Invoke(new Messages_EditChatTitle
{
chat_id = chat_id,
title = title,
});
/// ⚠