mirror of
https://github.com/Tyrrrz/DiscordChatExporter.git
synced 2025-05-23 19:26:57 -04:00
parent
632b9f953b
commit
0d2ae8b5db
6 changed files with 22 additions and 12 deletions
|
@ -26,7 +26,7 @@ namespace DiscordChatExporter.Cli.Commands
|
||||||
var channels = await DataService.GetGuildChannelsAsync(GetToken(), GuildId);
|
var channels = await DataService.GetGuildChannelsAsync(GetToken(), GuildId);
|
||||||
|
|
||||||
// Filter and order channels
|
// Filter and order channels
|
||||||
channels = channels.Where(c => c.Type == ChannelType.GuildTextChat).OrderBy(c => c.Name).ToArray();
|
channels = channels.Where(c => c.Type.IsExportable()).OrderBy(c => c.Name).ToArray();
|
||||||
|
|
||||||
// Loop through channels
|
// Loop through channels
|
||||||
foreach (var channel in channels)
|
foreach (var channel in channels)
|
||||||
|
|
|
@ -24,7 +24,7 @@ namespace DiscordChatExporter.Cli.Commands
|
||||||
var channels = await DataService.GetGuildChannelsAsync(GetToken(), GuildId);
|
var channels = await DataService.GetGuildChannelsAsync(GetToken(), GuildId);
|
||||||
|
|
||||||
// Filter and order channels
|
// Filter and order channels
|
||||||
channels = channels.Where(c => c.Type == ChannelType.GuildTextChat).OrderBy(c => c.Name).ToArray();
|
channels = channels.Where(c => c.Type.IsExportable()).OrderBy(c => c.Name).ToArray();
|
||||||
|
|
||||||
// Print result
|
// Print result
|
||||||
foreach (var channel in channels)
|
foreach (var channel in channels)
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
namespace DiscordChatExporter.Core.Models
|
namespace DiscordChatExporter.Core.Models
|
||||||
{
|
{
|
||||||
// https://discordapp.com/developers/docs/resources/channel#channel-object-channel-types
|
// https://discordapp.com/developers/docs/resources/channel#channel-object-channel-types
|
||||||
|
// Order of enum fields needs to match the order in the docs.
|
||||||
|
|
||||||
public enum ChannelType
|
public enum ChannelType
|
||||||
{
|
{
|
||||||
|
@ -8,6 +9,8 @@
|
||||||
DirectTextChat,
|
DirectTextChat,
|
||||||
GuildVoiceChat,
|
GuildVoiceChat,
|
||||||
DirectGroupTextChat,
|
DirectGroupTextChat,
|
||||||
Category
|
GuildCategory,
|
||||||
|
GuildNews,
|
||||||
|
GuildStore
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -4,6 +4,13 @@ namespace DiscordChatExporter.Core.Models
|
||||||
{
|
{
|
||||||
public static class Extensions
|
public static class Extensions
|
||||||
{
|
{
|
||||||
|
public static bool IsExportable(this ChannelType channelType) =>
|
||||||
|
channelType == ChannelType.GuildTextChat ||
|
||||||
|
channelType == ChannelType.DirectTextChat ||
|
||||||
|
channelType == ChannelType.DirectGroupTextChat ||
|
||||||
|
channelType == ChannelType.GuildNews ||
|
||||||
|
channelType == ChannelType.GuildStore;
|
||||||
|
|
||||||
public static string GetFileExtension(this ExportFormat format) =>
|
public static string GetFileExtension(this ExportFormat format) =>
|
||||||
format switch
|
format switch
|
||||||
{
|
{
|
||||||
|
|
|
@ -4,25 +4,25 @@ using System.Windows.Data;
|
||||||
|
|
||||||
namespace DiscordChatExporter.Gui.Converters
|
namespace DiscordChatExporter.Gui.Converters
|
||||||
{
|
{
|
||||||
[ValueConversion(typeof(DateTimeOffset), typeof(DateTime))]
|
[ValueConversion(typeof(DateTimeOffset?), typeof(DateTime?))]
|
||||||
public class DateTimeOffsetToDateTimeConverter : IValueConverter
|
public class DateTimeOffsetToDateTimeConverter : IValueConverter
|
||||||
{
|
{
|
||||||
public static DateTimeOffsetToDateTimeConverter Instance { get; } = new DateTimeOffsetToDateTimeConverter();
|
public static DateTimeOffsetToDateTimeConverter Instance { get; } = new DateTimeOffsetToDateTimeConverter();
|
||||||
|
|
||||||
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
|
public object? Convert(object value, Type targetType, object parameter, CultureInfo culture)
|
||||||
{
|
{
|
||||||
if (value is DateTimeOffset dateTimeOffsetValue)
|
if (value is DateTimeOffset dateTimeOffsetValue)
|
||||||
return dateTimeOffsetValue.DateTime;
|
return dateTimeOffsetValue.DateTime;
|
||||||
|
|
||||||
return default(DateTime);
|
return default(DateTime?);
|
||||||
}
|
}
|
||||||
|
|
||||||
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
|
public object? ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
|
||||||
{
|
{
|
||||||
if (value is DateTime dateTimeValue)
|
if (value is DateTime dateTimeValue)
|
||||||
return new DateTimeOffset(dateTimeValue);
|
return new DateTimeOffset(dateTimeValue);
|
||||||
|
|
||||||
return default(DateTimeOffset);
|
return default(DateTimeOffset?);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -201,14 +201,14 @@ namespace DiscordChatExporter.Gui.ViewModels
|
||||||
var channels = await _dataService.GetGuildChannelsAsync(token, guild.Id);
|
var channels = await _dataService.GetGuildChannelsAsync(token, guild.Id);
|
||||||
|
|
||||||
// Get category channels
|
// Get category channels
|
||||||
var categoryChannels = channels.Where(c => c.Type == ChannelType.Category).ToArray();
|
var categoryChannels = channels.Where(c => c.Type == ChannelType.GuildCategory).ToArray();
|
||||||
|
|
||||||
// Get text channels
|
// Get exportable channels
|
||||||
var textChannels = channels.Where(c => c.Type == ChannelType.GuildTextChat).ToArray();
|
var exportableChannels = channels.Where(c => c.Type.IsExportable()).ToArray();
|
||||||
|
|
||||||
// Create channel view models
|
// Create channel view models
|
||||||
var channelViewModels = new List<ChannelViewModel>();
|
var channelViewModels = new List<ChannelViewModel>();
|
||||||
foreach (var channel in textChannels)
|
foreach (var channel in exportableChannels)
|
||||||
{
|
{
|
||||||
// Get category
|
// Get category
|
||||||
var category = categoryChannels.FirstOrDefault(c => c.Id == channel.ParentId)?.Name;
|
var category = categoryChannels.FirstOrDefault(c => c.Id == channel.ParentId)?.Name;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue