Refactor last commit

pull/379/head
Alexey Golub 4 years ago
parent 6d2880ce26
commit 91f4f02a35

@ -1,33 +1,36 @@
using System.Linq; using System.Collections.Generic;
using System.Threading.Tasks; using System.Threading.Tasks;
using CliFx; using CliFx;
using CliFx.Attributes; using CliFx.Attributes;
using DiscordChatExporter.Cli.Commands.Base; using DiscordChatExporter.Cli.Commands.Base;
using DiscordChatExporter.Domain.Discord.Models; using DiscordChatExporter.Domain.Discord.Models;
using DiscordChatExporter.Domain.Utilities;
namespace DiscordChatExporter.Cli.Commands namespace DiscordChatExporter.Cli.Commands
{ {
[Command("exportall", Description = "Export all direct messages and all channels within all guilds.")] [Command("exportall", Description = "Export all accessible channels.")]
public class ExportAllCommand : ExportMultipleCommandBase public class ExportAllCommand : ExportMultipleCommandBase
{ {
[CommandOption("exclude-dm", 'e', Description = "If this flag is present, direct messages will not be exported.")] [CommandOption("include-dm", Description = "Whether to also export direct message channels.")]
public bool ExcludeDMs { get; set; } public bool IncludeDirectMessages { get; set; } = true;
public override async ValueTask ExecuteAsync(IConsole console) public override async ValueTask ExecuteAsync(IConsole console)
{ {
var channels = new List<Channel>();
if(!ExcludeDMs){ // Aggregate channels from all guilds
var dmChannels = await GetDiscordClient().GetGuildChannelsAsync(Guild.DirectMessages.Id); await foreach (var guild in GetDiscordClient().GetUserGuildsAsync())
await ExportMultipleAsync(console, dmChannels); {
} // Skip DMs if instructed to
if (!IncludeDirectMessages && guild.Id == Guild.DirectMessages.Id)
continue;
var guilds = await GetDiscordClient().GetUserGuildsAsync(); await foreach (var channel in GetDiscordClient().GetGuildChannelsAsync(guild.Id))
foreach (var guild in guilds.OrderBy(g => g.Name))
{ {
var guildChannels = await GetDiscordClient().GetGuildChannelsAsync(guild.Id); channels.Add(channel);
await ExportMultipleAsync(console, guildChannels);
} }
} }
await ExportMultipleAsync(console, channels);
}
} }
} }

@ -12,8 +12,8 @@ namespace DiscordChatExporter.Cli.Commands
{ {
public override async ValueTask ExecuteAsync(IConsole console) public override async ValueTask ExecuteAsync(IConsole console)
{ {
var dmChannels = await GetDiscordClient().GetGuildChannelsAsync(Guild.DirectMessages.Id); var channels = await GetDiscordClient().GetGuildChannelsAsync(Guild.DirectMessages.Id);
await ExportMultipleAsync(console, dmChannels); await ExportMultipleAsync(console, channels);
} }
} }
} }

@ -14,8 +14,8 @@ namespace DiscordChatExporter.Cli.Commands
public override async ValueTask ExecuteAsync(IConsole console) public override async ValueTask ExecuteAsync(IConsole console)
{ {
var guildChannels = await GetDiscordClient().GetGuildChannelsAsync(GuildId); var channels = await GetDiscordClient().GetGuildChannelsAsync(GuildId);
await ExportMultipleAsync(console, guildChannels); await ExportMultipleAsync(console, channels);
} }
} }
} }

@ -7,7 +7,7 @@ using DiscordChatExporter.Domain.Utilities;
namespace DiscordChatExporter.Cli.Commands namespace DiscordChatExporter.Cli.Commands
{ {
[Command("channels", Description = "Get the list of channels in specified guild.")] [Command("channels", Description = "Get the list of channels in a guild.")]
public class GetChannelsCommand : TokenCommandBase public class GetChannelsCommand : TokenCommandBase
{ {
[CommandOption("guild", 'g', IsRequired = true, Description = "Guild ID.")] [CommandOption("guild", 'g', IsRequired = true, Description = "Guild ID.")]
@ -15,9 +15,9 @@ namespace DiscordChatExporter.Cli.Commands
public override async ValueTask ExecuteAsync(IConsole console) public override async ValueTask ExecuteAsync(IConsole console)
{ {
var guildChannels = await GetDiscordClient().GetGuildChannelsAsync(GuildId); var channels = await GetDiscordClient().GetGuildChannelsAsync(GuildId);
foreach (var channel in guildChannels.OrderBy(c => c.Category).ThenBy(c => c.Name)) foreach (var channel in channels.OrderBy(c => c.Category).ThenBy(c => c.Name))
console.Output.WriteLine($"{channel.Id} | {channel.Category} / {channel.Name}"); console.Output.WriteLine($"{channel.Id} | {channel.Category} / {channel.Name}");
} }
} }

@ -13,9 +13,9 @@ namespace DiscordChatExporter.Cli.Commands
{ {
public override async ValueTask ExecuteAsync(IConsole console) public override async ValueTask ExecuteAsync(IConsole console)
{ {
var dmChannels = await GetDiscordClient().GetGuildChannelsAsync(Guild.DirectMessages.Id); var channels = await GetDiscordClient().GetGuildChannelsAsync(Guild.DirectMessages.Id);
foreach (var channel in dmChannels.OrderBy(c => c.Category).ThenBy(c => c.Name)) foreach (var channel in channels.OrderBy(c => c.Category).ThenBy(c => c.Name))
console.Output.WriteLine($"{channel.Id} | {channel.Category} / {channel.Name}"); console.Output.WriteLine($"{channel.Id} | {channel.Category} / {channel.Name}");
} }
} }

Loading…
Cancel
Save