| @@ -0,0 +1,54 @@ | |||||
| using System; | |||||
| using System.Collections.Generic; | |||||
| using System.Linq; | |||||
| using System.Text; | |||||
| using System.Threading.Tasks; | |||||
| namespace Discord | |||||
| { | |||||
| public static class ChannelExtensions | |||||
| { | |||||
| /// <summary> | |||||
| /// Attempts to get the <see cref="ChannelType"/> based off of the channel's interfaces. | |||||
| /// </summary> | |||||
| /// <param name="channel">The channel to get the type of.</param> | |||||
| /// <returns>The <see cref="ChannelType"/> of the channel if found, otherwise <see langword="null"/>.</returns> | |||||
| public static ChannelType? GetChannelType(this IChannel channel) | |||||
| { | |||||
| switch (channel) | |||||
| { | |||||
| case IStageChannel: | |||||
| return ChannelType.Stage; | |||||
| case IThreadChannel thread: | |||||
| return thread.Type switch | |||||
| { | |||||
| ThreadType.NewsThread => ChannelType.NewsThread, | |||||
| ThreadType.PrivateThread => ChannelType.PrivateThread, | |||||
| ThreadType.PublicThread => ChannelType.PublicThread, | |||||
| _ => null, | |||||
| }; | |||||
| case ICategoryChannel: | |||||
| return ChannelType.Category; | |||||
| case IDMChannel: | |||||
| return ChannelType.DM; | |||||
| case IGroupChannel: | |||||
| return ChannelType.Group; | |||||
| case INewsChannel: | |||||
| return ChannelType.News; | |||||
| case IVoiceChannel: | |||||
| return ChannelType.Voice; | |||||
| case ITextChannel: | |||||
| return ChannelType.Text; | |||||
| } | |||||
| return null; | |||||
| } | |||||
| } | |||||
| } | |||||