using Newtonsoft.Json; using Newtonsoft.Json.Serialization; using File = Telegram.Bot.Types.File; using TgUser = Telegram.Bot.Types.User; namespace West.TelegramBot.ChatQuotes.Model.Quote; [JsonObject(NamingStrategyType = typeof(CamelCaseNamingStrategy))] public class Message { public List? Media { get; set; } public MediaType? MediaType { get; set; } public long ChatId { get; set; } public bool Avatar { get; set; } = true; public User? From { get; set; } public string? Text { get; set; } public Telegram.Bot.Types.Message? ReplyMessage { get; set; } public static Message FromMessage(Telegram.Bot.Types.Message msg) { var quoteMessage = new Message(); if (msg.Text != null) { quoteMessage.Text = msg.Text; } var sticker = msg.Sticker; if (sticker != null) { var file = new File { FileId = sticker.FileId, FileSize = sticker.FileSize, FileUniqueId = sticker.FileUniqueId }; quoteMessage.Media = new List { file }; quoteMessage.MediaType = Quote.MediaType.Sticker; } TgUser? user = null; if (msg.ForwardSenderName != null && msg.ForwardFrom == null) { user = new TgUser { FirstName = msg.ForwardSenderName }; } quoteMessage.ChatId = msg.From?.Id ?? msg.Chat.Id; quoteMessage.ReplyMessage = msg.ReplyToMessage; quoteMessage.From = User.FromTgUser(user ?? msg.ForwardFrom ?? msg.From!); return quoteMessage; } }