From 8b929690a9a89a9aa8a8b8e43ec0dd2e1ab685db Mon Sep 17 00:00:00 2001
From: Mihail Gribkov <61027276+Misha-133@users.noreply.github.com>
Date: Tue, 22 Oct 2024 21:46:54 +0300
Subject: [PATCH] yippee (#3021)
---
src/Discord.Net.Core/Entities/Channels/IChannel.cs | 5 +++++
src/Discord.Net.Rest/Entities/Channels/RestChannel.cs | 10 +++++++++-
.../Entities/Channels/RestDMChannel.cs | 2 ++
.../Entities/Channels/RestGroupChannel.cs | 1 +
.../Entities/Channels/RestGuildChannel.cs | 1 +
.../Entities/Channels/SocketChannel.cs | 9 ++++++++-
.../Entities/Channels/SocketDMChannel.cs | 1 +
.../Entities/Channels/SocketGroupChannel.cs | 1 +
.../Entities/Channels/SocketGuildChannel.cs | 1 +
.../MockedEntities/MockedCategoryChannel.cs | 1 +
.../MockedEntities/MockedDMChannel.cs | 1 +
.../MockedEntities/MockedGroupChannel.cs | 1 +
.../MockedEntities/MockedInvalidChannel.cs | 1 +
.../MockedEntities/MockedTextChannel.cs | 1 +
.../MockedEntities/MockedVoiceChannel.cs | 2 ++
15 files changed, 36 insertions(+), 2 deletions(-)
diff --git a/src/Discord.Net.Core/Entities/Channels/IChannel.cs b/src/Discord.Net.Core/Entities/Channels/IChannel.cs
index 1de37243..36baf362 100644
--- a/src/Discord.Net.Core/Entities/Channels/IChannel.cs
+++ b/src/Discord.Net.Core/Entities/Channels/IChannel.cs
@@ -8,6 +8,11 @@ namespace Discord
///
public interface IChannel : ISnowflakeEntity
{
+ ///
+ /// Get the type of this channel.
+ ///
+ ChannelType ChannelType { get; }
+
///
/// Gets the name of this channel.
///
diff --git a/src/Discord.Net.Rest/Entities/Channels/RestChannel.cs b/src/Discord.Net.Rest/Entities/Channels/RestChannel.cs
index bbf52a44..075959d7 100644
--- a/src/Discord.Net.Rest/Entities/Channels/RestChannel.cs
+++ b/src/Discord.Net.Rest/Entities/Channels/RestChannel.cs
@@ -12,6 +12,10 @@ namespace Discord.Rest
public class RestChannel : RestEntity, IChannel, IUpdateable
{
#region RestChannel
+
+ ///
+ public ChannelType ChannelType { get; internal set; }
+
///
public virtual DateTimeOffset CreatedAt => SnowflakeUtils.FromSnowflake(Id);
@@ -68,7 +72,11 @@ namespace Discord.Rest
_ => throw new InvalidOperationException($"Unexpected channel type: {model.Type}"),
};
}
- internal virtual void Update(Model model) { }
+
+ internal virtual void Update(Model model)
+ {
+ ChannelType = model.Type;
+ }
///
public virtual Task UpdateAsync(RequestOptions options = null) => Task.Delay(0);
diff --git a/src/Discord.Net.Rest/Entities/Channels/RestDMChannel.cs b/src/Discord.Net.Rest/Entities/Channels/RestDMChannel.cs
index d0fccbb3..2c09b963 100644
--- a/src/Discord.Net.Rest/Entities/Channels/RestDMChannel.cs
+++ b/src/Discord.Net.Rest/Entities/Channels/RestDMChannel.cs
@@ -47,6 +47,8 @@ namespace Discord.Rest
}
internal override void Update(Model model)
{
+ base.Update(model);
+
if(model.Recipients.IsSpecified)
Recipient?.Update(model.Recipients.Value[0]);
}
diff --git a/src/Discord.Net.Rest/Entities/Channels/RestGroupChannel.cs b/src/Discord.Net.Rest/Entities/Channels/RestGroupChannel.cs
index f7d5652c..7fa7b3c6 100644
--- a/src/Discord.Net.Rest/Entities/Channels/RestGroupChannel.cs
+++ b/src/Discord.Net.Rest/Entities/Channels/RestGroupChannel.cs
@@ -41,6 +41,7 @@ namespace Discord.Rest
}
internal override void Update(Model model)
{
+ base.Update(model);
if (model.Name.IsSpecified)
Name = model.Name.Value;
if (model.Icon.IsSpecified)
diff --git a/src/Discord.Net.Rest/Entities/Channels/RestGuildChannel.cs b/src/Discord.Net.Rest/Entities/Channels/RestGuildChannel.cs
index 250cc32b..2bf16fcd 100644
--- a/src/Discord.Net.Rest/Entities/Channels/RestGuildChannel.cs
+++ b/src/Discord.Net.Rest/Entities/Channels/RestGuildChannel.cs
@@ -53,6 +53,7 @@ namespace Discord.Rest
}
internal override void Update(Model model)
{
+ base.Update(model);
Name = model.Name.Value;
if (model.Position.IsSpecified)
diff --git a/src/Discord.Net.WebSocket/Entities/Channels/SocketChannel.cs b/src/Discord.Net.WebSocket/Entities/Channels/SocketChannel.cs
index c30b3d25..3c7b7c9c 100644
--- a/src/Discord.Net.WebSocket/Entities/Channels/SocketChannel.cs
+++ b/src/Discord.Net.WebSocket/Entities/Channels/SocketChannel.cs
@@ -14,6 +14,9 @@ namespace Discord.WebSocket
public abstract class SocketChannel : SocketEntity, IChannel
{
#region SocketChannel
+ ///
+ public ChannelType ChannelType { get; internal set; }
+
///
/// Gets when the channel is created.
///
@@ -38,7 +41,11 @@ namespace Discord.WebSocket
_ => throw new InvalidOperationException($"Unexpected channel type: {model.Type}"),
};
}
- internal abstract void Update(ClientState state, Model model);
+
+ internal virtual void Update(ClientState state, Model model)
+ {
+ ChannelType = model.Type;
+ }
#endregion
#region User
diff --git a/src/Discord.Net.WebSocket/Entities/Channels/SocketDMChannel.cs b/src/Discord.Net.WebSocket/Entities/Channels/SocketDMChannel.cs
index 7f087b1b..2627c8e3 100644
--- a/src/Discord.Net.WebSocket/Entities/Channels/SocketDMChannel.cs
+++ b/src/Discord.Net.WebSocket/Entities/Channels/SocketDMChannel.cs
@@ -44,6 +44,7 @@ namespace Discord.WebSocket
internal override void Update(ClientState state, Model model)
{
Recipient.Update(state, model.Recipients.Value[0]);
+ base.Update(state, model);
}
internal static SocketDMChannel Create(DiscordSocketClient discord, ClientState state, ulong channelId, API.User recipient)
{
diff --git a/src/Discord.Net.WebSocket/Entities/Channels/SocketGroupChannel.cs b/src/Discord.Net.WebSocket/Entities/Channels/SocketGroupChannel.cs
index 3bba7e66..28702cd5 100644
--- a/src/Discord.Net.WebSocket/Entities/Channels/SocketGroupChannel.cs
+++ b/src/Discord.Net.WebSocket/Entities/Channels/SocketGroupChannel.cs
@@ -63,6 +63,7 @@ namespace Discord.WebSocket
}
internal override void Update(ClientState state, Model model)
{
+ base.Update(state, model);
if (model.Name.IsSpecified)
Name = model.Name.Value;
if (model.Icon.IsSpecified)
diff --git a/src/Discord.Net.WebSocket/Entities/Channels/SocketGuildChannel.cs b/src/Discord.Net.WebSocket/Entities/Channels/SocketGuildChannel.cs
index 92dd93d6..14c636e3 100644
--- a/src/Discord.Net.WebSocket/Entities/Channels/SocketGuildChannel.cs
+++ b/src/Discord.Net.WebSocket/Entities/Channels/SocketGuildChannel.cs
@@ -70,6 +70,7 @@ namespace Discord.WebSocket
///
internal override void Update(ClientState state, Model model)
{
+ base.Update(state, model);
Name = model.Name.Value;
Position = model.Position.GetValueOrDefault(0);
diff --git a/test/Discord.Net.Tests.Unit/MockedEntities/MockedCategoryChannel.cs b/test/Discord.Net.Tests.Unit/MockedEntities/MockedCategoryChannel.cs
index 5588bd67..928ceb18 100644
--- a/test/Discord.Net.Tests.Unit/MockedEntities/MockedCategoryChannel.cs
+++ b/test/Discord.Net.Tests.Unit/MockedEntities/MockedCategoryChannel.cs
@@ -7,6 +7,7 @@ namespace Discord
{
internal sealed class MockedCategoryChannel : ICategoryChannel
{
+ public ChannelType ChannelType => ChannelType.Category;
public int Position => throw new NotImplementedException();
public IGuild Guild => throw new NotImplementedException();
diff --git a/test/Discord.Net.Tests.Unit/MockedEntities/MockedDMChannel.cs b/test/Discord.Net.Tests.Unit/MockedEntities/MockedDMChannel.cs
index 8f1469a1..e6f24419 100644
--- a/test/Discord.Net.Tests.Unit/MockedEntities/MockedDMChannel.cs
+++ b/test/Discord.Net.Tests.Unit/MockedEntities/MockedDMChannel.cs
@@ -8,6 +8,7 @@ namespace Discord
{
internal sealed class MockedDMChannel : IDMChannel
{
+ public ChannelType ChannelType => ChannelType.DM;
public IUser Recipient => throw new NotImplementedException();
public IReadOnlyCollection Recipients => throw new NotImplementedException();
diff --git a/test/Discord.Net.Tests.Unit/MockedEntities/MockedGroupChannel.cs b/test/Discord.Net.Tests.Unit/MockedEntities/MockedGroupChannel.cs
index 423b4cc9..9d7ae46c 100644
--- a/test/Discord.Net.Tests.Unit/MockedEntities/MockedGroupChannel.cs
+++ b/test/Discord.Net.Tests.Unit/MockedEntities/MockedGroupChannel.cs
@@ -8,6 +8,7 @@ namespace Discord
{
internal sealed class MockedGroupChannel : IGroupChannel
{
+ public ChannelType ChannelType => ChannelType.Group;
public IReadOnlyCollection Recipients => throw new NotImplementedException();
public string Name => throw new NotImplementedException();
diff --git a/test/Discord.Net.Tests.Unit/MockedEntities/MockedInvalidChannel.cs b/test/Discord.Net.Tests.Unit/MockedEntities/MockedInvalidChannel.cs
index 362eeb97..6f9c4498 100644
--- a/test/Discord.Net.Tests.Unit/MockedEntities/MockedInvalidChannel.cs
+++ b/test/Discord.Net.Tests.Unit/MockedEntities/MockedInvalidChannel.cs
@@ -10,6 +10,7 @@ namespace Discord
///
internal sealed class MockedInvalidChannel : IChannel
{
+ public ChannelType ChannelType => ChannelType.Text;
public string Name => throw new NotImplementedException();
public DateTimeOffset CreatedAt => throw new NotImplementedException();
diff --git a/test/Discord.Net.Tests.Unit/MockedEntities/MockedTextChannel.cs b/test/Discord.Net.Tests.Unit/MockedEntities/MockedTextChannel.cs
index 82c69d52..52d54e25 100644
--- a/test/Discord.Net.Tests.Unit/MockedEntities/MockedTextChannel.cs
+++ b/test/Discord.Net.Tests.Unit/MockedEntities/MockedTextChannel.cs
@@ -8,6 +8,7 @@ namespace Discord
{
internal sealed class MockedTextChannel : ITextChannel
{
+ public ChannelType ChannelType => ChannelType.Text;
public bool IsNsfw => throw new NotImplementedException();
public int DefaultSlowModeInterval => throw new NotImplementedException();
diff --git a/test/Discord.Net.Tests.Unit/MockedEntities/MockedVoiceChannel.cs b/test/Discord.Net.Tests.Unit/MockedEntities/MockedVoiceChannel.cs
index f88bf484..9b557771 100644
--- a/test/Discord.Net.Tests.Unit/MockedEntities/MockedVoiceChannel.cs
+++ b/test/Discord.Net.Tests.Unit/MockedEntities/MockedVoiceChannel.cs
@@ -9,6 +9,8 @@ namespace Discord
{
internal sealed class MockedVoiceChannel : IVoiceChannel
{
+ public ChannelType ChannelType => ChannelType.Voice;
+
public int DefaultSlowModeInterval => throw new NotImplementedException();
public int Bitrate => throw new NotImplementedException();