using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace TelegramBotBase.Base { public class MessageResult : ResultBase { public Telegram.Bot.Args.MessageEventArgs RawMessageData { get; set; } public Telegram.Bot.Args.CallbackQueryEventArgs RawCallbackData { get; set; } /// /// Returns the Device/ChatId /// public override long DeviceId { get { return this.RawMessageData?.Message?.Chat.Id ?? this.RawCallbackData?.CallbackQuery.Message?.Chat.Id ?? 0; } } /// /// The message id /// public new int MessageId { get { return this.Message?.MessageId ?? this.RawCallbackData?.CallbackQuery?.Message?.MessageId ?? 0; } } public String Command { get { return this.RawMessageData?.Message?.Text ?? ""; } } public String MessageText { get { return this.RawMessageData?.Message?.Text ?? ""; } } /// /// Is this an action ? (i.e. button click) /// public bool IsAction { get { return (this.RawCallbackData != null); } } public bool Handled { get; set; } = false; public String RawData { get { return this.RawCallbackData?.CallbackQuery?.Data; } } public T GetData() where T : class { T cd = null; try { cd = Newtonsoft.Json.JsonConvert.DeserializeObject(this.RawData); return cd; } catch { } return null; } /// /// Confirm incomming action (i.e. Button click) /// /// /// public async Task ConfirmAction(String message = "") { try { await this.Client.TelegramClient.AnswerCallbackQueryAsync(this.RawCallbackData.CallbackQuery.Id, message); } catch { } } public override async Task DeleteMessage() { try { await base.DeleteMessage(this.MessageId); } catch { } } public MessageResult(Telegram.Bot.Args.MessageEventArgs rawdata) { this.RawMessageData = rawdata; this.Message = rawdata.Message; } public MessageResult(Telegram.Bot.Args.CallbackQueryEventArgs callback) { this.RawCallbackData = callback; this.Message = callback.CallbackQuery.Message; } } }