Add GetChannelType extension method (#2035)
This commit is contained in:
54
src/Discord.Net.Core/Extensions/ChannelExtensions.cs
Normal file
54
src/Discord.Net.Core/Extensions/ChannelExtensions.cs
Normal 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;
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user