From 1835af12d5c9aecd616087a7b1c3eb96dda26e49 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sat, 4 Apr 2026 11:28:04 +0000 Subject: [PATCH] Fix: catch JsonException in list unwrap; improve export error message Agent-Logs-Url: https://github.com/Tyrrrz/DiscordChatExporter/sessions/d2a03a38-0ed4-45c7-b8e7-615ffb35c971 Co-authored-by: Tyrrrz <1935960+Tyrrrz@users.noreply.github.com> --- .../Commands/ExportChannelsCommand.cs | 2 +- .../Commands/UnwrapChannelsCommand.cs | 22 ++++++++++++++----- 2 files changed, 18 insertions(+), 6 deletions(-) diff --git a/DiscordChatExporter.Cli/Commands/ExportChannelsCommand.cs b/DiscordChatExporter.Cli/Commands/ExportChannelsCommand.cs index d2dc2435..c07fc37b 100644 --- a/DiscordChatExporter.Cli/Commands/ExportChannelsCommand.cs +++ b/DiscordChatExporter.Cli/Commands/ExportChannelsCommand.cs @@ -57,7 +57,7 @@ public partial class ExportChannelsCommand : ExportCommandBase { throw new CommandException( "No channel IDs provided. " - + "Specify channel IDs as arguments or pipe them from a newline-separated list." + + "Specify channel IDs as arguments or pipe them from the 'list channels' or 'list channels dm' commands." ); } diff --git a/DiscordChatExporter.Cli/Commands/UnwrapChannelsCommand.cs b/DiscordChatExporter.Cli/Commands/UnwrapChannelsCommand.cs index 54db1091..5616f3d5 100644 --- a/DiscordChatExporter.Cli/Commands/UnwrapChannelsCommand.cs +++ b/DiscordChatExporter.Cli/Commands/UnwrapChannelsCommand.cs @@ -2,6 +2,7 @@ using System.Collections.Generic; using System.Text; using System.Text.Json; using System.Threading.Tasks; +using CliFx; using CliFx.Binding; using CliFx.Infrastructure; using DiscordChatExporter.Cli.Commands.Base; @@ -30,11 +31,22 @@ public partial class UnwrapChannelsCommand : DiscordCommandBase await foreach (var line in console.Input.ReadLinesAsync(cancellationToken)) sb.Append(line); - var channels = - JsonSerializer.Deserialize( - sb.ToString().Trim(), - CliJsonSerializerContext.Instance.ChannelArray - ) ?? []; + Channel[] channels; + try + { + channels = + JsonSerializer.Deserialize( + sb.ToString().Trim(), + CliJsonSerializerContext.Instance.ChannelArray + ) ?? []; + } + catch (JsonException) + { + throw new CommandException( + "Failed to parse input as a JSON channel array. " + + "Pipe the output of 'list channels' or 'list channels dm' to this command." + ); + } var result = new List(); var channelsByGuild = new Dictionary>();