| | | 1 | | using TeleFlow.Telegram.Schema.Abstractions; |
| | | 2 | | using TeleFlow.Telegram.Schema.Types; |
| | | 3 | | |
| | | 4 | | namespace TeleFlow.Telegram; |
| | | 5 | | |
| | | 6 | | /// <summary> |
| | | 7 | | /// Represents an ephemeral message sent through the Telegram Bot API. |
| | | 8 | | /// It retains the addressing identity required by Telegram's dedicated ephemeral edit and delete methods. |
| | | 9 | | /// </summary> |
| | | 10 | | public sealed class EphemeralMessageReference |
| | | 11 | | { |
| | | 12 | | private readonly ITelegramClient _bot; |
| | | 13 | | |
| | | 14 | | internal EphemeralMessageReference( |
| | | 15 | | ITelegramClient bot, |
| | | 16 | | EphemeralMessageTarget target, |
| | | 17 | | long ephemeralMessageId, |
| | | 18 | | Message telegramMessage) |
| | | 19 | | { |
| | 3 | 20 | | ArgumentNullException.ThrowIfNull(bot); |
| | 3 | 21 | | ArgumentNullException.ThrowIfNull(target); |
| | 3 | 22 | | ArgumentNullException.ThrowIfNull(telegramMessage); |
| | | 23 | | |
| | 3 | 24 | | _bot = bot; |
| | | 25 | | Target = target; |
| | | 26 | | EphemeralMessageId = ephemeralMessageId; |
| | | 27 | | TelegramMessage = telegramMessage; |
| | 3 | 28 | | } |
| | | 29 | | |
| | | 30 | | public EphemeralMessageTarget Target { get; } |
| | | 31 | | |
| | 6 | 32 | | public long ReceiverUserId => Target.ReceiverUserId; |
| | | 33 | | |
| | | 34 | | public long EphemeralMessageId { get; } |
| | | 35 | | |
| | | 36 | | public Message TelegramMessage { get; } |
| | | 37 | | |
| | | 38 | | public Task<bool> EditTextAsync( |
| | | 39 | | string text, |
| | | 40 | | InlineKeyboardMarkup? replyMarkup = null, |
| | | 41 | | CancellationToken cancellationToken = default) |
| | | 42 | | { |
| | 1 | 43 | | ArgumentException.ThrowIfNullOrWhiteSpace(text); |
| | | 44 | | |
| | 1 | 45 | | return _bot.EditEphemeralMessageTextAsync( |
| | 1 | 46 | | chatId: Target.ChatId, |
| | 1 | 47 | | receiverUserId: ReceiverUserId, |
| | 1 | 48 | | ephemeralMessageId: EphemeralMessageId, |
| | 1 | 49 | | text: text, |
| | 1 | 50 | | replyMarkup: replyMarkup, |
| | 1 | 51 | | cancellationToken: cancellationToken); |
| | | 52 | | } |
| | | 53 | | |
| | | 54 | | public Task<bool> EditCaptionAsync( |
| | | 55 | | string? caption = null, |
| | | 56 | | TelegramParseMode? parseMode = null, |
| | | 57 | | IReadOnlyList<MessageEntity>? captionEntities = null, |
| | | 58 | | InlineKeyboardMarkup? replyMarkup = null, |
| | | 59 | | CancellationToken cancellationToken = default) |
| | | 60 | | { |
| | 1 | 61 | | return _bot.EditEphemeralMessageCaptionAsync( |
| | 1 | 62 | | chatId: Target.ChatId, |
| | 1 | 63 | | receiverUserId: ReceiverUserId, |
| | 1 | 64 | | ephemeralMessageId: EphemeralMessageId, |
| | 1 | 65 | | caption: caption, |
| | 1 | 66 | | parseMode: parseMode, |
| | 1 | 67 | | captionEntities: captionEntities, |
| | 1 | 68 | | replyMarkup: replyMarkup, |
| | 1 | 69 | | cancellationToken: cancellationToken); |
| | | 70 | | } |
| | | 71 | | |
| | | 72 | | public Task<bool> EditMediaAsync( |
| | | 73 | | InputMedia media, |
| | | 74 | | InlineKeyboardMarkup? replyMarkup = null, |
| | | 75 | | CancellationToken cancellationToken = default) |
| | | 76 | | { |
| | 1 | 77 | | ArgumentNullException.ThrowIfNull(media); |
| | | 78 | | |
| | 1 | 79 | | return _bot.EditEphemeralMessageMediaAsync( |
| | 1 | 80 | | chatId: Target.ChatId, |
| | 1 | 81 | | receiverUserId: ReceiverUserId, |
| | 1 | 82 | | ephemeralMessageId: EphemeralMessageId, |
| | 1 | 83 | | media: media, |
| | 1 | 84 | | replyMarkup: replyMarkup, |
| | 1 | 85 | | cancellationToken: cancellationToken); |
| | | 86 | | } |
| | | 87 | | |
| | | 88 | | public Task<bool> EditReplyMarkupAsync( |
| | | 89 | | InlineKeyboardMarkup? replyMarkup = null, |
| | | 90 | | CancellationToken cancellationToken = default) |
| | | 91 | | { |
| | 1 | 92 | | return _bot.EditEphemeralMessageReplyMarkupAsync( |
| | 1 | 93 | | chatId: Target.ChatId, |
| | 1 | 94 | | receiverUserId: ReceiverUserId, |
| | 1 | 95 | | ephemeralMessageId: EphemeralMessageId, |
| | 1 | 96 | | replyMarkup: replyMarkup, |
| | 1 | 97 | | cancellationToken: cancellationToken); |
| | | 98 | | } |
| | | 99 | | |
| | | 100 | | public Task<bool> DeleteAsync(CancellationToken cancellationToken = default) |
| | | 101 | | { |
| | 1 | 102 | | return _bot.DeleteEphemeralMessageAsync( |
| | 1 | 103 | | chatId: Target.ChatId, |
| | 1 | 104 | | receiverUserId: ReceiverUserId, |
| | 1 | 105 | | ephemeralMessageId: EphemeralMessageId, |
| | 1 | 106 | | cancellationToken: cancellationToken); |
| | | 107 | | } |
| | | 108 | | } |