namespace TwitchChatTTS.Twitch.Socket.Messages { public class ChannelChatMessage { public required string BroadcasterUserId { get; set; } public required string BroadcasterUserLogin { get; set; } public required string BroadcasterUserName { get; set; } public required string ChatterUserId { get; set; } public required string ChatterUserLogin { get; set; } public required string ChatterUserName { get; set; } public required string MessageId { get; set; } public required TwitchChatMessageInfo Message { get; set; } public required string MessageType { get; set; } public required TwitchBadge[] Badges { get; set; } public TwitchReplyInfo? Reply { get; set; } public string? ChannelPointsCustomRewardId { get; set; } public string? ChannelPointsAnimationId { get; set; } public string? SourceBroadcasterUserId { get; set; } public string? SourceBroadcasterUserName { get; set; } public string? SourceBroadcasterUserLogin { get; set; } public string? SourceMessageId { get; set; } public TwitchBadge[]? SourceBadges { get; set; } } public class TwitchChatMessageInfo { public required string Text { get; set; } public required TwitchChatFragment[] Fragments { get; set; } } public class TwitchChatFragment { public required string Type { get; set; } public required string Text { get; set; } public TwitchCheerInfo? Cheermote { get; set; } public TwitchEmoteInfo? Emote { get; set; } public TwitchMentionInfo? Mention { get; set; } } public class TwitchCheerInfo { public required string Prefix { get; set; } public int Bits { get; set; } public int Tier { get; set; } } public class TwitchEmoteInfo { public required string Id { get; set; } public required string EmoteSetId { get; set; } public required string OwnerId { get; set; } public required string[] Format { get; set; } } public class TwitchMentionInfo { public required string UserId { get; set; } public required string UserName { get; set; } public required string UserLogin { get; set; } } public class TwitchBadge { public required string SetId { get; set; } public required string Id { get; set; } public required string Info { get; set; } } public class TwitchReplyInfo { public required string ParentMessageId { get; set; } public required string ParentMessageBody { get; set; } public required string ParentUserId { get; set; } public required string ParentUserName { get; set; } public required string ParentUserLogin { get; set; } public required string ThreadMessageId { get; set; } public required string ThreadUserName { get; set; } public required string ThreadUserLogin { get; set; } } }