mirror of
https://github.com/Tyrrrz/DiscordChatExporter.git
synced 2026-03-15 19:32:31 +00:00
Formatting
This commit is contained in:
@@ -1,4 +1,4 @@
|
|||||||
using DiscordChatExporter.Core.Discord;
|
using DiscordChatExporter.Core.Discord;
|
||||||
|
|
||||||
namespace DiscordChatExporter.Cli.Tests.Infra;
|
namespace DiscordChatExporter.Cli.Tests.Infra;
|
||||||
|
|
||||||
@@ -15,7 +15,7 @@ public static class ChannelIds
|
|||||||
public static Snowflake GroupingTestCases { get; } = Snowflake.Parse("992092091545034842");
|
public static Snowflake GroupingTestCases { get; } = Snowflake.Parse("992092091545034842");
|
||||||
|
|
||||||
public static Snowflake FilterTestCases { get; } = Snowflake.Parse("866744075033641020");
|
public static Snowflake FilterTestCases { get; } = Snowflake.Parse("866744075033641020");
|
||||||
|
|
||||||
public static Snowflake ForwardTestCases { get; } = Snowflake.Parse("1455202357204877477");
|
public static Snowflake ForwardTestCases { get; } = Snowflake.Parse("1455202357204877477");
|
||||||
|
|
||||||
public static Snowflake MarkdownTestCases { get; } = Snowflake.Parse("866459526819348521");
|
public static Snowflake MarkdownTestCases { get; } = Snowflake.Parse("866459526819348521");
|
||||||
|
|||||||
@@ -19,9 +19,6 @@ public class HtmlForwardSpecs
|
|||||||
);
|
);
|
||||||
|
|
||||||
// Assert
|
// Assert
|
||||||
message
|
message.Text().Should().ContainAll("Forwarded", @"¯\_(ツ)_/¯", "December 29, 2025");
|
||||||
.Text()
|
|
||||||
.Should()
|
|
||||||
.ContainAll("Forwarded", @"¯\_(ツ)_/¯", "December 29, 2025");
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -27,4 +27,3 @@ public class JsonForwardSpecs
|
|||||||
forwardedMessage.GetProperty("timestamp").GetString().Should().StartWith("2025-12-29");
|
forwardedMessage.GetProperty("timestamp").GetString().Should().StartWith("2025-12-29");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -14,8 +14,6 @@ public class PlainTextForwardSpecs
|
|||||||
var document = await ExportWrapper.ExportAsPlainTextAsync(ChannelIds.ForwardTestCases);
|
var document = await ExportWrapper.ExportAsPlainTextAsync(ChannelIds.ForwardTestCases);
|
||||||
|
|
||||||
// Assert
|
// Assert
|
||||||
document
|
document.Should().ContainAll("{Forwarded Message}", @"¯\_(ツ)_/¯", "December 29, 2025");
|
||||||
.Should()
|
|
||||||
.ContainAll("{Forwarded Message}", @"¯\_(ツ)_/¯", "December 29, 2025");
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -180,7 +180,7 @@ public partial record Message
|
|||||||
// Currently Discord only supports 1 snapshot per forward
|
// Currently Discord only supports 1 snapshot per forward
|
||||||
var forwardedMessage = json.GetPropertyOrNull("message_snapshots")
|
var forwardedMessage = json.GetPropertyOrNull("message_snapshots")
|
||||||
?.EnumerateArrayOrNull()
|
?.EnumerateArrayOrNull()
|
||||||
?.Select(j => j.GetPropertyOrNull("message"))
|
?.Select(j => j.GetPropertyOrNull("message"))
|
||||||
.WhereNotNull()
|
.WhereNotNull()
|
||||||
.Select(MessageSnapshot.Parse)
|
.Select(MessageSnapshot.Parse)
|
||||||
.FirstOrDefault();
|
.FirstOrDefault();
|
||||||
|
|||||||
@@ -9,14 +9,15 @@ public record MessageReference(
|
|||||||
MessageReferenceKind Kind,
|
MessageReferenceKind Kind,
|
||||||
Snowflake? MessageId,
|
Snowflake? MessageId,
|
||||||
Snowflake? ChannelId,
|
Snowflake? ChannelId,
|
||||||
Snowflake? GuildId)
|
Snowflake? GuildId
|
||||||
|
)
|
||||||
{
|
{
|
||||||
public static MessageReference Parse(JsonElement json)
|
public static MessageReference Parse(JsonElement json)
|
||||||
{
|
{
|
||||||
var kind =
|
var kind =
|
||||||
json.GetPropertyOrNull("type")?.GetInt32OrNull()?.Pipe(t => (MessageReferenceKind)t)
|
json.GetPropertyOrNull("type")?.GetInt32OrNull()?.Pipe(t => (MessageReferenceKind)t)
|
||||||
?? MessageReferenceKind.Default;
|
?? MessageReferenceKind.Default;
|
||||||
|
|
||||||
var messageId = json.GetPropertyOrNull("message_id")
|
var messageId = json.GetPropertyOrNull("message_id")
|
||||||
?.GetNonWhiteSpaceStringOrNull()
|
?.GetNonWhiteSpaceStringOrNull()
|
||||||
?.Pipe(Snowflake.Parse);
|
?.Pipe(Snowflake.Parse);
|
||||||
|
|||||||
@@ -15,7 +15,8 @@ public record MessageSnapshot(
|
|||||||
string Content,
|
string Content,
|
||||||
IReadOnlyList<Attachment> Attachments,
|
IReadOnlyList<Attachment> Attachments,
|
||||||
IReadOnlyList<Embed> Embeds,
|
IReadOnlyList<Embed> Embeds,
|
||||||
IReadOnlyList<Sticker> Stickers)
|
IReadOnlyList<Sticker> Stickers
|
||||||
|
)
|
||||||
{
|
{
|
||||||
public static MessageSnapshot Parse(JsonElement json)
|
public static MessageSnapshot Parse(JsonElement json)
|
||||||
{
|
{
|
||||||
@@ -23,37 +24,35 @@ public record MessageSnapshot(
|
|||||||
json.GetPropertyOrNull("timestamp")?.GetDateTimeOffsetOrNull()
|
json.GetPropertyOrNull("timestamp")?.GetDateTimeOffsetOrNull()
|
||||||
?? DateTimeOffset.MinValue;
|
?? DateTimeOffset.MinValue;
|
||||||
|
|
||||||
var editedTimestamp = json
|
var editedTimestamp = json.GetPropertyOrNull("edited_timestamp")?.GetDateTimeOffsetOrNull();
|
||||||
.GetPropertyOrNull("edited_timestamp")
|
|
||||||
?.GetDateTimeOffsetOrNull();
|
|
||||||
|
|
||||||
var content = json.GetPropertyOrNull("content")?.GetStringOrNull() ?? "";
|
var content = json.GetPropertyOrNull("content")?.GetStringOrNull() ?? "";
|
||||||
|
|
||||||
var attachments =
|
var attachments =
|
||||||
json
|
json.GetPropertyOrNull("attachments")
|
||||||
.GetPropertyOrNull("attachments")
|
|
||||||
?.EnumerateArrayOrNull()
|
?.EnumerateArrayOrNull()
|
||||||
?.Select(Attachment.Parse)
|
?.Select(Attachment.Parse)
|
||||||
.ToArray()
|
.ToArray()
|
||||||
?? [];
|
?? [];
|
||||||
|
|
||||||
var embeds =
|
var embeds =
|
||||||
json
|
json.GetPropertyOrNull("embeds")?.EnumerateArrayOrNull()?.Select(Embed.Parse).ToArray()
|
||||||
.GetPropertyOrNull("embeds")
|
|
||||||
?.EnumerateArrayOrNull()
|
|
||||||
?.Select(Embed.Parse)
|
|
||||||
.ToArray()
|
|
||||||
?? [];
|
?? [];
|
||||||
|
|
||||||
var stickers =
|
var stickers =
|
||||||
json
|
json.GetPropertyOrNull("sticker_items")
|
||||||
.GetPropertyOrNull("sticker_items")
|
|
||||||
?.EnumerateArrayOrNull()
|
?.EnumerateArrayOrNull()
|
||||||
?.Select(Sticker.Parse)
|
?.Select(Sticker.Parse)
|
||||||
.ToArray()
|
.ToArray()
|
||||||
?? [];
|
?? [];
|
||||||
|
|
||||||
return new MessageSnapshot(timestamp,
|
return new MessageSnapshot(
|
||||||
editedTimestamp, content, attachments, embeds, stickers);
|
timestamp,
|
||||||
|
editedTimestamp,
|
||||||
|
content,
|
||||||
|
attachments,
|
||||||
|
embeds,
|
||||||
|
stickers
|
||||||
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -352,7 +352,7 @@ internal class JsonMessageWriter(Stream stream, ExportContext context)
|
|||||||
_writer.WriteEndObject();
|
_writer.WriteEndObject();
|
||||||
await _writer.FlushAsync(cancellationToken);
|
await _writer.FlushAsync(cancellationToken);
|
||||||
}
|
}
|
||||||
|
|
||||||
private async ValueTask WriteStickerAsync(
|
private async ValueTask WriteStickerAsync(
|
||||||
Sticker sticker,
|
Sticker sticker,
|
||||||
CancellationToken cancellationToken = default
|
CancellationToken cancellationToken = default
|
||||||
@@ -553,14 +553,14 @@ internal class JsonMessageWriter(Stream stream, ExportContext context)
|
|||||||
|
|
||||||
_writer.WriteString(
|
_writer.WriteString(
|
||||||
"timestamp",
|
"timestamp",
|
||||||
Context.NormalizeDate(message.ForwardedMessage.Timestamp)
|
Context.NormalizeDate(message.ForwardedMessage.Timestamp)
|
||||||
);
|
);
|
||||||
|
|
||||||
_writer.WriteString(
|
_writer.WriteString(
|
||||||
"timestampEdited",
|
"timestampEdited",
|
||||||
message.ForwardedMessage.EditedTimestamp?.Pipe(Context.NormalizeDate)
|
message.ForwardedMessage.EditedTimestamp?.Pipe(Context.NormalizeDate)
|
||||||
);
|
);
|
||||||
|
|
||||||
_writer.WriteString(
|
_writer.WriteString(
|
||||||
"content",
|
"content",
|
||||||
await FormatMarkdownAsync(message.ForwardedMessage.Content, cancellationToken)
|
await FormatMarkdownAsync(message.ForwardedMessage.Content, cancellationToken)
|
||||||
|
|||||||
@@ -239,9 +239,9 @@ internal class PlainTextMessageWriter(Stream stream, ExportContext context)
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
await _writer.WriteLineAsync(
|
await _writer.WriteLineAsync(
|
||||||
$"Originally sent: {Context.FormatDate(forwardedMessage.Timestamp)}"
|
$"Originally sent: {Context.FormatDate(forwardedMessage.Timestamp)}"
|
||||||
);
|
);
|
||||||
|
|
||||||
await WriteAttachmentsAsync(forwardedMessage.Attachments, cancellationToken);
|
await WriteAttachmentsAsync(forwardedMessage.Attachments, cancellationToken);
|
||||||
await WriteEmbedsAsync(forwardedMessage.Embeds, cancellationToken);
|
await WriteEmbedsAsync(forwardedMessage.Embeds, cancellationToken);
|
||||||
|
|||||||
@@ -24,7 +24,7 @@ public static class CollectionExtensions
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
extension<T>(IEnumerable<T?> source)
|
extension<T>(IEnumerable<T?> source)
|
||||||
where T : struct
|
where T : struct
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user