Browse Source

Add GetChannelType extension method (#2035)

tags/3.2.0
Quin Lynch GitHub 3 years ago
parent
commit
64423a0653
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 54 additions and 0 deletions
  1. +54
    -0
      src/Discord.Net.Core/Extensions/ChannelExtensions.cs

+ 54
- 0
src/Discord.Net.Core/Extensions/ChannelExtensions.cs 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;
}
}
}

Loading…
Cancel
Save