mirror of
https://github.com/Tyrrrz/DiscordChatExporter.git
synced 2025-05-22 10:55:15 -04:00
Extract thread status and improve CLI output
This commit is contained in:
parent
609ca0fc0d
commit
11d34109a7
4 changed files with 46 additions and 14 deletions
|
@ -36,19 +36,20 @@ public class GetChannelsCommand : DiscordCommandBase
|
||||||
.ThenBy(c => c.Name)
|
.ThenBy(c => c.Name)
|
||||||
.ToArray();
|
.ToArray();
|
||||||
|
|
||||||
var threads = Array.Empty<ChannelThread>();
|
var channelIdMaxLength = channels
|
||||||
if (IncludeThreads)
|
.Select(c => c.Id.ToString().Length)
|
||||||
{
|
.OrderDescending()
|
||||||
threads = (await Discord.GetGuildThreadsAsync(GuildId, cancellationToken))
|
.FirstOrDefault();
|
||||||
.OrderBy(c => c.Name)
|
|
||||||
.ToArray();
|
var threads = IncludeThreads
|
||||||
}
|
? (await Discord.GetGuildThreadsAsync(GuildId, cancellationToken)).OrderBy(c => c.Name).ToArray()
|
||||||
|
: Array.Empty<ChannelThread>();
|
||||||
|
|
||||||
foreach (var channel in channels)
|
foreach (var channel in channels)
|
||||||
{
|
{
|
||||||
// Channel ID
|
// Channel ID
|
||||||
await console.Output.WriteAsync(
|
await console.Output.WriteAsync(
|
||||||
channel.Id.ToString().PadRight(20, ' ')
|
channel.Id.ToString().PadRight(channelIdMaxLength, ' ')
|
||||||
);
|
);
|
||||||
|
|
||||||
// Separator
|
// Separator
|
||||||
|
@ -59,14 +60,20 @@ public class GetChannelsCommand : DiscordCommandBase
|
||||||
using (console.WithForegroundColor(ConsoleColor.White))
|
using (console.WithForegroundColor(ConsoleColor.White))
|
||||||
await console.Output.WriteLineAsync($"{channel.Category.Name} / {channel.Name}");
|
await console.Output.WriteLineAsync($"{channel.Category.Name} / {channel.Name}");
|
||||||
|
|
||||||
foreach (var thread in threads.Where(t => t.ParentId == channel.Id))
|
var channelThreads = threads.Where(t => t.ParentId == channel.Id).ToArray();
|
||||||
|
var channelThreadIdMaxLength = channelThreads
|
||||||
|
.Select(t => t.Id.ToString().Length)
|
||||||
|
.OrderDescending()
|
||||||
|
.FirstOrDefault();
|
||||||
|
|
||||||
|
foreach (var thread in channelThreads)
|
||||||
{
|
{
|
||||||
// Indent
|
// Indent
|
||||||
await console.Output.WriteAsync('\t');
|
await console.Output.WriteAsync(" * ");
|
||||||
|
|
||||||
// Thread ID
|
// Thread ID
|
||||||
await console.Output.WriteAsync(
|
await console.Output.WriteAsync(
|
||||||
thread.Id.ToString().PadRight(20, ' ')
|
thread.Id.ToString().PadRight(channelThreadIdMaxLength, ' ')
|
||||||
);
|
);
|
||||||
|
|
||||||
// Separator
|
// Separator
|
||||||
|
@ -75,7 +82,15 @@ public class GetChannelsCommand : DiscordCommandBase
|
||||||
|
|
||||||
// Thread name
|
// Thread name
|
||||||
using (console.WithForegroundColor(ConsoleColor.White))
|
using (console.WithForegroundColor(ConsoleColor.White))
|
||||||
await console.Output.WriteLineAsync($"Thread / {thread.Name}");
|
await console.Output.WriteAsync($"Thread / {thread.Name}");
|
||||||
|
|
||||||
|
// Separator
|
||||||
|
using (console.WithForegroundColor(ConsoleColor.DarkGray))
|
||||||
|
await console.Output.WriteAsync(" | ");
|
||||||
|
|
||||||
|
// Thread status
|
||||||
|
using (console.WithForegroundColor(ConsoleColor.White))
|
||||||
|
await console.Output.WriteLineAsync(thread.IsActive ? "Active" : "Archived");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -22,11 +22,16 @@ public class GetDirectChannelsCommand : DiscordCommandBase
|
||||||
.ThenBy(c => c.Name)
|
.ThenBy(c => c.Name)
|
||||||
.ToArray();
|
.ToArray();
|
||||||
|
|
||||||
|
var channelIdMaxLength = channels
|
||||||
|
.Select(c => c.Id.ToString().Length)
|
||||||
|
.OrderDescending()
|
||||||
|
.FirstOrDefault();
|
||||||
|
|
||||||
foreach (var channel in channels)
|
foreach (var channel in channels)
|
||||||
{
|
{
|
||||||
// Channel ID
|
// Channel ID
|
||||||
await console.Output.WriteAsync(
|
await console.Output.WriteAsync(
|
||||||
channel.Id.ToString().PadRight(20, ' ')
|
channel.Id.ToString().PadRight(channelIdMaxLength, ' ')
|
||||||
);
|
);
|
||||||
|
|
||||||
// Separator
|
// Separator
|
||||||
|
|
|
@ -22,11 +22,16 @@ public class GetGuildsCommand : DiscordCommandBase
|
||||||
.ThenBy(g => g.Name)
|
.ThenBy(g => g.Name)
|
||||||
.ToArray();
|
.ToArray();
|
||||||
|
|
||||||
|
var guildIdMaxLength = guilds
|
||||||
|
.Select(g => g.Id.ToString().Length)
|
||||||
|
.OrderDescending()
|
||||||
|
.FirstOrDefault();
|
||||||
|
|
||||||
foreach (var guild in guilds)
|
foreach (var guild in guilds)
|
||||||
{
|
{
|
||||||
// Guild ID
|
// Guild ID
|
||||||
await console.Output.WriteAsync(
|
await console.Output.WriteAsync(
|
||||||
guild.Id.ToString().PadRight(20, ' ')
|
guild.Id.ToString().PadRight(guildIdMaxLength, ' ')
|
||||||
);
|
);
|
||||||
|
|
||||||
// Separator
|
// Separator
|
||||||
|
|
|
@ -12,6 +12,7 @@ public record ChannelThread(
|
||||||
Snowflake GuildId,
|
Snowflake GuildId,
|
||||||
Snowflake ParentId,
|
Snowflake ParentId,
|
||||||
string Name,
|
string Name,
|
||||||
|
bool IsActive,
|
||||||
Snowflake? LastMessageId) : IHasId
|
Snowflake? LastMessageId) : IHasId
|
||||||
{
|
{
|
||||||
public static ChannelThread Parse(JsonElement json)
|
public static ChannelThread Parse(JsonElement json)
|
||||||
|
@ -22,6 +23,11 @@ public record ChannelThread(
|
||||||
var parentId = json.GetProperty("parent_id").GetNonWhiteSpaceString().Pipe(Snowflake.Parse);
|
var parentId = json.GetProperty("parent_id").GetNonWhiteSpaceString().Pipe(Snowflake.Parse);
|
||||||
var name = json.GetProperty("name").GetNonWhiteSpaceString();
|
var name = json.GetProperty("name").GetNonWhiteSpaceString();
|
||||||
|
|
||||||
|
var isActive = !json
|
||||||
|
.GetPropertyOrNull("thread_metadata")?
|
||||||
|
.GetPropertyOrNull("archived")?
|
||||||
|
.GetBooleanOrNull() ?? true;
|
||||||
|
|
||||||
var lastMessageId = json
|
var lastMessageId = json
|
||||||
.GetPropertyOrNull("last_message_id")?
|
.GetPropertyOrNull("last_message_id")?
|
||||||
.GetNonWhiteSpaceStringOrNull()?
|
.GetNonWhiteSpaceStringOrNull()?
|
||||||
|
@ -33,6 +39,7 @@ public record ChannelThread(
|
||||||
guildId,
|
guildId,
|
||||||
parentId,
|
parentId,
|
||||||
name,
|
name,
|
||||||
|
isActive,
|
||||||
lastMessageId
|
lastMessageId
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue