Add GetChannelType extension method (#2035)

This commit is contained in:
Quin Lynch
2022-01-14 07:56:42 -04:00
committed by GitHub
parent 7075d4ee35
commit 64423a0653

View File

@@ -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;
}
}
}