pull/1160/head
Tyrrrz 10 months ago
parent 576ee73bfc
commit 008c2e64aa

@ -105,7 +105,7 @@ public static class ExportWrapper
if (message is null)
{
throw new InvalidOperationException(
$"Message #{messageId} does not exist in the export of channel #{channelId}."
$"Message #{messageId} not found in the export of channel #{channelId}."
);
}
@ -129,7 +129,7 @@ public static class ExportWrapper
if (message.ValueKind == JsonValueKind.Undefined)
{
throw new InvalidOperationException(
$"Message #{messageId} does not exist in the export of channel #{channelId}."
$"Message #{messageId} not found in the export of channel #{channelId}."
);
}

@ -169,8 +169,7 @@ public abstract class ExportCommandBase : DiscordCommandBase
throw new CommandException(
"Attempted to export multiple channels, but the output path is neither a directory nor a template. "
+ "If the provided output path is meant to be treated as a directory, make sure it ends with a slash. "
+ "Provided output path: "
+ OutputPath
+ $"Provided output path: '{OutputPath}'."
);
}

@ -618,7 +618,7 @@ public class DiscordClient
if (!application.IsMessageContentIntentEnabled)
{
throw new DiscordChatExporterException(
"Bot account does not have the Message Content Intent enabled.",
"Provided bot account does not have the Message Content Intent enabled.",
true
);
}

@ -22,26 +22,26 @@ public partial record struct Snowflake
public static Snowflake FromDate(DateTimeOffset instant) =>
new(((ulong)instant.ToUnixTimeMilliseconds() - 1420070400000UL) << 22);
public static Snowflake? TryParse(string? str, IFormatProvider? formatProvider = null)
public static Snowflake? TryParse(string? value, IFormatProvider? formatProvider = null)
{
if (string.IsNullOrWhiteSpace(str))
if (string.IsNullOrWhiteSpace(value))
return null;
// As number
if (ulong.TryParse(str, NumberStyles.None, formatProvider, out var value))
return new Snowflake(value);
if (ulong.TryParse(value, NumberStyles.None, formatProvider, out var number))
return new Snowflake(number);
// As date
if (DateTimeOffset.TryParse(str, formatProvider, DateTimeStyles.None, out var instant))
if (DateTimeOffset.TryParse(value, formatProvider, DateTimeStyles.None, out var instant))
return FromDate(instant);
return null;
}
public static Snowflake Parse(string str, IFormatProvider? formatProvider) =>
TryParse(str, formatProvider) ?? throw new FormatException($"Invalid snowflake '{str}'.");
public static Snowflake Parse(string value, IFormatProvider? formatProvider) =>
TryParse(value, formatProvider) ?? throw new FormatException($"Invalid snowflake '{value}'.");
public static Snowflake Parse(string str) => Parse(str, null);
public static Snowflake Parse(string value) => Parse(value, null);
}
public partial record struct Snowflake : IComparable<Snowflake>, IComparable

@ -22,7 +22,9 @@ public class ChannelExporter(DiscordClient discord)
if (request.Channel.Kind == ChannelKind.GuildForum)
{
throw new DiscordChatExporterException(
$"Channel '{request.Channel.Name}' (#{request.Channel.Id}) is a forum and cannot be exported directly. "
$"Channel '{request.Channel.Name}' (#{request.Channel.Id}) "
+ $"of guild '{request.Guild.Name}' (#{request.Guild.Id}) "
+ $"is a forum and cannot be exported directly. "
+ "You need to pull its threads and export them individually."
);
}
@ -31,7 +33,9 @@ public class ChannelExporter(DiscordClient discord)
if (request.Channel.IsEmpty)
{
throw new DiscordChatExporterException(
$"Channel '{request.Channel.Name}' (#{request.Channel.Id}) does not contain any messages."
$"Channel '{request.Channel.Name}' (#{request.Channel.Id}) "
+ $"of guild '{request.Guild.Name}' (#{request.Guild.Id}) "
+ $"does not contain any messages."
);
}
@ -39,7 +43,9 @@ public class ChannelExporter(DiscordClient discord)
if (request.After is not null && !request.Channel.MayHaveMessagesAfter(request.After.Value))
{
throw new DiscordChatExporterException(
$"Channel '{request.Channel.Name}' (#{request.Channel.Id}) does not contain any messages within the specified period."
$"Channel '{request.Channel.Name}' (#{request.Channel.Id}) "
+ $"of guild '{request.Guild.Name}' (#{request.Guild.Id}) "
+ $"does not contain any messages within the specified period."
);
}
@ -50,7 +56,9 @@ public class ChannelExporter(DiscordClient discord)
)
{
throw new DiscordChatExporterException(
$"Channel '{request.Channel.Name}' (#{request.Channel.Id}) does not contain any messages within the specified period."
$"Channel '{request.Channel.Name}' (#{request.Channel.Id}) "
+ $"of guild '{request.Guild.Name}' (#{request.Guild.Id}) "
+ $"does not contain any messages within the specified period."
);
}
@ -84,7 +92,9 @@ public class ChannelExporter(DiscordClient discord)
{
// Provide more context to the exception, to simplify debugging based on error messages
throw new DiscordChatExporterException(
$"Failed to export message #{message.Id} in channel '{request.Channel.Name}' (#{request.Channel.Id}).",
$"Failed to export message #{message.Id} "
+ $"in channel '{request.Channel.Name}' (#{request.Channel.Id}) "
+ $"of guild '{request.Guild.Name} (#{request.Guild.Id})'.",
ex is not DiscordChatExporterException dex || dex.IsFatal,
ex
);
@ -95,7 +105,9 @@ public class ChannelExporter(DiscordClient discord)
if (messageExporter.MessagesExported <= 0)
{
throw new DiscordChatExporterException(
$"Channel '{request.Channel.Name}' (#{request.Channel.Id}) does not contain any matching messages within the specified period."
$"Channel '{request.Channel.Name}' (#{request.Channel.Id}) "
+ $"of guild '{request.Guild.Name}' (#{request.Guild.Id}) "
+ $"does not contain any matching messages within the specified period."
);
}
}

Loading…
Cancel
Save