summary refs log tree commit diff
path: root/extra/admin-api/Models/Spacebar.Models.Generic/Message.cs
diff options
context:
space:
mode:
authorRory& <root@rory.gay>2026-05-17 03:14:34 +0200
committerRory& <root@rory.gay>2026-05-17 03:14:34 +0200
commit8f76cc5edf8588c8bec36daf0bbdc7d699d38800 (patch)
treed84535fa9d66a674ed652d0b7d5e6cb4865ba7ac /extra/admin-api/Models/Spacebar.Models.Generic/Message.cs
parentAdd WIP client (diff)
downloadserver-ts-8f76cc5edf8588c8bec36daf0bbdc7d699d38800.tar.xz
client: basic message parsing, gateway listening
Diffstat (limited to 'extra/admin-api/Models/Spacebar.Models.Generic/Message.cs')
-rw-r--r--extra/admin-api/Models/Spacebar.Models.Generic/Message.cs133
1 files changed, 133 insertions, 0 deletions
diff --git a/extra/admin-api/Models/Spacebar.Models.Generic/Message.cs b/extra/admin-api/Models/Spacebar.Models.Generic/Message.cs
new file mode 100644

index 00000000..4898daaf --- /dev/null +++ b/extra/admin-api/Models/Spacebar.Models.Generic/Message.cs
@@ -0,0 +1,133 @@ +using System.Text.Json.Nodes; +using System.Text.Json.Serialization; + +namespace Spacebar.Models.Generic; + +public class Message { + [JsonPropertyName("id"), JsonNumberHandling(JsonNumberHandling.AllowReadingFromString | JsonNumberHandling.WriteAsString)] + public required long Id { get; set; } + + [JsonPropertyName("channel_id"), JsonNumberHandling(JsonNumberHandling.AllowReadingFromString | JsonNumberHandling.WriteAsString)] + public long? ChannelId { get; set; } + + [JsonPropertyName("guild_id"), JsonNumberHandling(JsonNumberHandling.AllowReadingFromString | JsonNumberHandling.WriteAsString)] + public long? GuildId { get; set; } + + [JsonPropertyName("webhook_id"), JsonNumberHandling(JsonNumberHandling.AllowReadingFromString | JsonNumberHandling.WriteAsString)] + public long? WebhookId { get; set; } + + [JsonPropertyName("application_id"), JsonNumberHandling(JsonNumberHandling.AllowReadingFromString | JsonNumberHandling.WriteAsString)] + public long? ApplicationId { get; set; } + + [JsonPropertyName("content")] + public string? Content { get; set; } + + [JsonPropertyName("timestamp")] + public DateTime Timestamp { get; set; } + + [JsonPropertyName("edited_timestamp")] + public DateTime? EditedTimestamp { get; set; } + + [JsonPropertyName("tts")] + public bool? Tts { get; set; } + + [JsonPropertyName("mention_everyone")] + public bool? MentionEveryone { get; set; } + + [JsonPropertyName("mentions")] + public List<PartialUser>? Mentions { get; set; } + + [JsonPropertyName("embeds")] + public JsonObject[] Embeds { get; set; } + + [JsonPropertyName("reactions")] + public JsonObject[] Reactions { get; set; } = null!; + + [JsonPropertyName("nonce")] + public string? Nonce { get; set; } + + [JsonPropertyName("type")] + public int Type { get; set; } + + [JsonPropertyName("activity")] + public string? Activity { get; set; } + + [JsonPropertyName("message_reference")] + public MessageReference? MessageReference { get; set; } + + [JsonPropertyName("referenced_message")] + public Message? ReferencedMessage { get; set; } + + [JsonPropertyName("interaction")] + public string? Interaction { get; set; } + + [JsonPropertyName("components")] + public JsonObject[] Components { get; set; } + + [JsonPropertyName("flags")] + public int Flags { get; set; } + + [JsonPropertyName("poll")] + public string? Poll { get; set; } + + [JsonPropertyName("username")] + public string? Username { get; set; } + + [JsonPropertyName("avatar")] + public string? Avatar { get; set; } + + [JsonPropertyName("pinned_at")] + public DateTime? PinnedAt { get; set; } + + [JsonPropertyName("interaction_metadata")] + public JsonObject? InteractionMetadata { get; set; } + + [JsonPropertyName("message_snapshots")] + public JsonObject[]? MessageSnapshots { get; set; } + + [JsonPropertyName("thread_id"), JsonNumberHandling(JsonNumberHandling.AllowReadingFromString | JsonNumberHandling.WriteAsString)] + public long? ThreadId { get; set; } + + [JsonPropertyName("author")] + public PartialUser Author { get; set; } + + [JsonPropertyName("attachments")] + public List<MessageAttachment> Attachments { get; set; } +} + +public class MessageReference { + [JsonPropertyName("guild_id"), JsonNumberHandling(JsonNumberHandling.AllowReadingFromString | JsonNumberHandling.WriteAsString)] + public long? GuildId { get; set; } + + [JsonPropertyName("channel_id"), JsonNumberHandling(JsonNumberHandling.AllowReadingFromString | JsonNumberHandling.WriteAsString)] + public long ChannelId { get; set; } + + [JsonPropertyName("message_id"), JsonNumberHandling(JsonNumberHandling.AllowReadingFromString | JsonNumberHandling.WriteAsString)] + public long MessageId { get; set; } +} + +public class MessageAttachment { + [JsonPropertyName("id"), JsonNumberHandling(JsonNumberHandling.AllowReadingFromString | JsonNumberHandling.WriteAsString)] + public long Id { get; set; } + + [JsonPropertyName("filename")] + public string Filename { get; set; } + + [JsonPropertyName("size")] + public int Size { get; set; } + + [JsonPropertyName("height")] + public int? Height { get; set; } + [JsonPropertyName("width")] + public int? Width { get; set; } + + [JsonPropertyName("content_type")] + public string ContentType { get; set; } + + // channel id? message id? are these leaked properties? + [JsonPropertyName("url")] + public string Url { get; set; } + + [JsonPropertyName("proxy_url")] + public string ProxyUrl { get; set; } +} \ No newline at end of file