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