using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Discord
{
public static class ChannelExtensions
{
///
/// Attempts to get the based off of the channel's interfaces.
///
/// The channel to get the type of.
/// The of the channel if found, otherwise .
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;
case IMediaChannel:
return ChannelType.Media;
case IForumChannel:
return ChannelType.Forum;
}
return null;
}
}
}