MessageMedia.ToInputMedia helper

This commit is contained in:
Wizou 2022-09-04 15:24:59 +02:00
parent 3f3ff4cb9b
commit a071c993d5
3 changed files with 36 additions and 15 deletions

2
.github/dev.yml vendored
View file

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

View file

@ -208,6 +208,21 @@ namespace TL
partial class ChatParticipantsForbidden { public override ChatParticipantBase[] Participants => Array.Empty<ChatParticipantBase>(); } partial class ChatParticipantsForbidden { public override ChatParticipantBase[] Participants => Array.Empty<ChatParticipantBase>(); }
partial class ChatParticipants { public override ChatParticipantBase[] Participants => participants; } partial class ChatParticipants { public override ChatParticipantBase[] Participants => participants; }
partial class MessageMedia { ///<summary>Use this helper method to send a copy of the media without downloading it</summary>
///<remarks>Quiz poll may need to be voted before obtaining the correct answers. Dice will not replicate same value.<br/>May return <see langword="null"/> for Invoice and other unsupported media types</remarks>
public virtual InputMedia ToInputMedia() => null; }
partial class MessageMediaPhoto { public override InputMedia ToInputMedia() => new InputMediaPhoto { id = photo }; }
partial class MessageMediaGeo { public override InputMedia ToInputMedia() => new InputMediaGeoPoint { geo_point = geo }; }
partial class MessageMediaContact { public override InputMedia ToInputMedia() => new InputMediaContact { first_name = first_name, last_name = last_name, phone_number = phone_number, vcard = vcard }; }
partial class MessageMediaDocument { public override InputMedia ToInputMedia() => new InputMediaDocument { id = document }; }
partial class MessageMediaVenue { public override InputMedia ToInputMedia() => new InputMediaVenue { geo_point = geo, title = title, address = address, provider = provider, venue_id = venue_id, venue_type = venue_type }; }
partial class MessageMediaGame { public override InputMedia ToInputMedia() => new InputMediaGame { id = game }; }
partial class MessageMediaGeoLive { public override InputMedia ToInputMedia() => new InputMediaGeoLive { geo_point = geo, heading = heading, period = period, proximity_notification_radius = proximity_notification_radius,
flags = (period != 0 ? InputMediaGeoLive.Flags.has_period : 0) | (flags.HasFlag(Flags.has_heading) ? InputMediaGeoLive.Flags.has_heading : 0) | (flags.HasFlag(Flags.has_proximity_notification_radius) ? InputMediaGeoLive.Flags.has_proximity_notification_radius : 0) }; }
partial class MessageMediaPoll { public override InputMedia ToInputMedia() => new InputMediaPoll { poll = poll, correct_answers = results.results?.Where(pav => pav.flags.HasFlag(PollAnswerVoters.Flags.correct)).Select(pav => pav.option).ToArray(), solution = results.solution, solution_entities = results.solution_entities,
flags = (results.results != null ? InputMediaPoll.Flags.has_correct_answers : 0) | (results.solution != null ? InputMediaPoll.Flags.has_solution : 0) }; }
partial class MessageMediaDice { public override InputMedia ToInputMedia() => new InputMediaDice { emoticon = emoticon }; }
partial class PhotoBase partial class PhotoBase
{ {
public abstract long ID { get; } public abstract long ID { get; }
@ -287,7 +302,12 @@ namespace TL
} }
} }
public partial class InputMediaUploadedDocument partial class GeoPoint
{
public static implicit operator InputGeoPoint(GeoPoint geo) => new() { lat = geo.lat, lon = geo.lon, accuracy_radius = geo.accuracy_radius, flags = (InputGeoPoint.Flags)geo.flags };
}
partial class InputMediaUploadedDocument
{ {
public InputMediaUploadedDocument() { } public InputMediaUploadedDocument() { }
public InputMediaUploadedDocument(InputFileBase inputFile, string mimeType) public InputMediaUploadedDocument(InputFileBase inputFile, string mimeType)
@ -495,7 +515,8 @@ namespace TL
partial class Messages_PeerDialogs { public IPeerInfo UserOrChat(DialogBase dialog) => dialog.Peer?.UserOrChat(users, chats); } partial class Messages_PeerDialogs { public IPeerInfo UserOrChat(DialogBase dialog) => dialog.Peer?.UserOrChat(users, chats); }
partial class WebDocument { public static implicit operator InputWebFileLocation(WebDocument doc) => new() { url = doc.url, access_hash = doc.access_hash }; } partial class Game { public static implicit operator InputGameID(Game game) => new() { id = game.id, access_hash = game.access_hash }; }
partial class WebDocument { public static implicit operator InputWebFileLocation(WebDocument doc) => new() { url = doc.url, access_hash = doc.access_hash }; }
partial class InputMessage partial class InputMessage
{ {

View file

@ -1673,10 +1673,10 @@ namespace TL
/// <summary>Media <para>Derived classes: <see cref="MessageMediaPhoto"/>, <see cref="MessageMediaGeo"/>, <see cref="MessageMediaContact"/>, <see cref="MessageMediaUnsupported"/>, <see cref="MessageMediaDocument"/>, <see cref="MessageMediaWebPage"/>, <see cref="MessageMediaVenue"/>, <see cref="MessageMediaGame"/>, <see cref="MessageMediaInvoice"/>, <see cref="MessageMediaGeoLive"/>, <see cref="MessageMediaPoll"/>, <see cref="MessageMediaDice"/></para> <para>See <a href="https://corefork.telegram.org/type/MessageMedia"/></para></summary> /// <summary>Media <para>Derived classes: <see cref="MessageMediaPhoto"/>, <see cref="MessageMediaGeo"/>, <see cref="MessageMediaContact"/>, <see cref="MessageMediaUnsupported"/>, <see cref="MessageMediaDocument"/>, <see cref="MessageMediaWebPage"/>, <see cref="MessageMediaVenue"/>, <see cref="MessageMediaGame"/>, <see cref="MessageMediaInvoice"/>, <see cref="MessageMediaGeoLive"/>, <see cref="MessageMediaPoll"/>, <see cref="MessageMediaDice"/></para> <para>See <a href="https://corefork.telegram.org/type/MessageMedia"/></para></summary>
/// <remarks>a <c>null</c> value means <a href="https://corefork.telegram.org/constructor/messageMediaEmpty">messageMediaEmpty</a></remarks> /// <remarks>a <c>null</c> value means <a href="https://corefork.telegram.org/constructor/messageMediaEmpty">messageMediaEmpty</a></remarks>
public abstract class MessageMedia : IObject { } public abstract partial class MessageMedia : IObject { }
/// <summary>Attached photo. <para>See <a href="https://corefork.telegram.org/constructor/messageMediaPhoto"/></para></summary> /// <summary>Attached photo. <para>See <a href="https://corefork.telegram.org/constructor/messageMediaPhoto"/></para></summary>
[TLDef(0x695150D7)] [TLDef(0x695150D7)]
public class MessageMediaPhoto : MessageMedia public partial class MessageMediaPhoto : MessageMedia
{ {
/// <summary>Flags, see <a href="https://corefork.telegram.org/mtproto/TL-combinators#conditional-fields">TL conditional fields</a></summary> /// <summary>Flags, see <a href="https://corefork.telegram.org/mtproto/TL-combinators#conditional-fields">TL conditional fields</a></summary>
public Flags flags; public Flags flags;
@ -1695,14 +1695,14 @@ namespace TL
} }
/// <summary>Attached map. <para>See <a href="https://corefork.telegram.org/constructor/messageMediaGeo"/></para></summary> /// <summary>Attached map. <para>See <a href="https://corefork.telegram.org/constructor/messageMediaGeo"/></para></summary>
[TLDef(0x56E0D474)] [TLDef(0x56E0D474)]
public class MessageMediaGeo : MessageMedia public partial class MessageMediaGeo : MessageMedia
{ {
/// <summary>GeoPoint</summary> /// <summary>GeoPoint</summary>
public GeoPoint geo; public GeoPoint geo;
} }
/// <summary>Attached contact. <para>See <a href="https://corefork.telegram.org/constructor/messageMediaContact"/></para></summary> /// <summary>Attached contact. <para>See <a href="https://corefork.telegram.org/constructor/messageMediaContact"/></para></summary>
[TLDef(0x70322949)] [TLDef(0x70322949)]
public class MessageMediaContact : MessageMedia public partial class MessageMediaContact : MessageMedia
{ {
/// <summary>Phone number</summary> /// <summary>Phone number</summary>
public string phone_number; public string phone_number;
@ -1720,7 +1720,7 @@ namespace TL
public class MessageMediaUnsupported : MessageMedia { } public class MessageMediaUnsupported : MessageMedia { }
/// <summary>Document (video, audio, voice, sticker, any media type except photo) <para>See <a href="https://corefork.telegram.org/constructor/messageMediaDocument"/></para></summary> /// <summary>Document (video, audio, voice, sticker, any media type except photo) <para>See <a href="https://corefork.telegram.org/constructor/messageMediaDocument"/></para></summary>
[TLDef(0x9CB070D7)] [TLDef(0x9CB070D7)]
public class MessageMediaDocument : MessageMedia public partial class MessageMediaDocument : MessageMedia
{ {
/// <summary>Flags, see <a href="https://corefork.telegram.org/mtproto/TL-combinators#conditional-fields">TL conditional fields</a></summary> /// <summary>Flags, see <a href="https://corefork.telegram.org/mtproto/TL-combinators#conditional-fields">TL conditional fields</a></summary>
public Flags flags; public Flags flags;
@ -1748,7 +1748,7 @@ namespace TL
} }
/// <summary>Venue <para>See <a href="https://corefork.telegram.org/constructor/messageMediaVenue"/></para></summary> /// <summary>Venue <para>See <a href="https://corefork.telegram.org/constructor/messageMediaVenue"/></para></summary>
[TLDef(0x2EC0533F)] [TLDef(0x2EC0533F)]
public class MessageMediaVenue : MessageMedia public partial class MessageMediaVenue : MessageMedia
{ {
/// <summary>Geolocation of venue</summary> /// <summary>Geolocation of venue</summary>
public GeoPoint geo; public GeoPoint geo;
@ -1765,7 +1765,7 @@ namespace TL
} }
/// <summary>Telegram game <para>See <a href="https://corefork.telegram.org/constructor/messageMediaGame"/></para></summary> /// <summary>Telegram game <para>See <a href="https://corefork.telegram.org/constructor/messageMediaGame"/></para></summary>
[TLDef(0xFDB19008)] [TLDef(0xFDB19008)]
public class MessageMediaGame : MessageMedia public partial class MessageMediaGame : MessageMedia
{ {
/// <summary>Game</summary> /// <summary>Game</summary>
public Game game; public Game game;
@ -1805,7 +1805,7 @@ namespace TL
} }
/// <summary>Indicates a <a href="https://corefork.telegram.org/api/live-location">live geolocation</a> <para>See <a href="https://corefork.telegram.org/constructor/messageMediaGeoLive"/></para></summary> /// <summary>Indicates a <a href="https://corefork.telegram.org/api/live-location">live geolocation</a> <para>See <a href="https://corefork.telegram.org/constructor/messageMediaGeoLive"/></para></summary>
[TLDef(0xB940C666)] [TLDef(0xB940C666)]
public class MessageMediaGeoLive : MessageMedia public partial class MessageMediaGeoLive : MessageMedia
{ {
/// <summary>Flags, see <a href="https://corefork.telegram.org/mtproto/TL-combinators#conditional-fields">TL conditional fields</a></summary> /// <summary>Flags, see <a href="https://corefork.telegram.org/mtproto/TL-combinators#conditional-fields">TL conditional fields</a></summary>
public Flags flags; public Flags flags;
@ -1828,7 +1828,7 @@ namespace TL
} }
/// <summary>Poll <para>See <a href="https://corefork.telegram.org/constructor/messageMediaPoll"/></para></summary> /// <summary>Poll <para>See <a href="https://corefork.telegram.org/constructor/messageMediaPoll"/></para></summary>
[TLDef(0x4BD6E798)] [TLDef(0x4BD6E798)]
public class MessageMediaPoll : MessageMedia public partial class MessageMediaPoll : MessageMedia
{ {
/// <summary>The poll</summary> /// <summary>The poll</summary>
public Poll poll; public Poll poll;
@ -1837,7 +1837,7 @@ namespace TL
} }
/// <summary><a href="https://corefork.telegram.org/api/dice">Dice-based animated sticker</a> <para>See <a href="https://corefork.telegram.org/constructor/messageMediaDice"/></para></summary> /// <summary><a href="https://corefork.telegram.org/api/dice">Dice-based animated sticker</a> <para>See <a href="https://corefork.telegram.org/constructor/messageMediaDice"/></para></summary>
[TLDef(0x3F7EE58B)] [TLDef(0x3F7EE58B)]
public class MessageMediaDice : MessageMedia public partial class MessageMediaDice : MessageMedia
{ {
/// <summary><a href="https://corefork.telegram.org/api/dice">Dice value</a></summary> /// <summary><a href="https://corefork.telegram.org/api/dice">Dice value</a></summary>
public int value; public int value;
@ -2355,7 +2355,7 @@ namespace TL
/// <summary>GeoPoint. <para>See <a href="https://corefork.telegram.org/constructor/geoPoint"/></para></summary> /// <summary>GeoPoint. <para>See <a href="https://corefork.telegram.org/constructor/geoPoint"/></para></summary>
/// <remarks>a <c>null</c> value means <a href="https://corefork.telegram.org/constructor/geoPointEmpty">geoPointEmpty</a></remarks> /// <remarks>a <c>null</c> value means <a href="https://corefork.telegram.org/constructor/geoPointEmpty">geoPointEmpty</a></remarks>
[TLDef(0xB2A2F663)] [TLDef(0xB2A2F663)]
public class GeoPoint : IObject public partial class GeoPoint : IObject
{ {
/// <summary>Flags, see <a href="https://corefork.telegram.org/mtproto/TL-combinators#conditional-fields">TL conditional fields</a></summary> /// <summary>Flags, see <a href="https://corefork.telegram.org/mtproto/TL-combinators#conditional-fields">TL conditional fields</a></summary>
public Flags flags; public Flags flags;
@ -8029,7 +8029,7 @@ namespace TL
/// <summary>Indicates an already sent game <para>See <a href="https://corefork.telegram.org/constructor/game"/></para></summary> /// <summary>Indicates an already sent game <para>See <a href="https://corefork.telegram.org/constructor/game"/></para></summary>
[TLDef(0xBDF9653B)] [TLDef(0xBDF9653B)]
public class Game : IObject public partial class Game : IObject
{ {
/// <summary>Flags, see <a href="https://corefork.telegram.org/mtproto/TL-combinators#conditional-fields">TL conditional fields</a></summary> /// <summary>Flags, see <a href="https://corefork.telegram.org/mtproto/TL-combinators#conditional-fields">TL conditional fields</a></summary>
public Flags flags; public Flags flags;