diff --git a/src/Discord.Net.Core/Entities/Messages/IMessage.cs b/src/Discord.Net.Core/Entities/Messages/IMessage.cs
index 0437cd7d1..8d5b24c52 100644
--- a/src/Discord.Net.Core/Entities/Messages/IMessage.cs
+++ b/src/Discord.Net.Core/Entities/Messages/IMessage.cs
@@ -89,6 +89,14 @@ namespace Discord
///
IUser Author { get; }
+ ///
+ /// Gets the thread that was started from this message.
+ ///
+ ///
+ /// An object if this message has thread attached; otherwise .
+ ///
+ IThreadChannel Thread { get; }
+
///
/// Gets all attachments included in this message.
///
diff --git a/src/Discord.Net.Rest/Entities/Messages/RestMessage.cs b/src/Discord.Net.Rest/Entities/Messages/RestMessage.cs
index a497289d1..f928e362e 100644
--- a/src/Discord.Net.Rest/Entities/Messages/RestMessage.cs
+++ b/src/Discord.Net.Rest/Entities/Messages/RestMessage.cs
@@ -1,9 +1,13 @@
+using Discord.API;
+
using Newtonsoft.Json.Linq;
+
using System;
using System.Collections.Generic;
using System.Collections.Immutable;
using System.Linq;
using System.Threading.Tasks;
+
using Model = Discord.API.Message;
namespace Discord.Rest
@@ -45,6 +49,12 @@ namespace Discord.Rest
///
public virtual bool MentionedEveryone => false;
+ ///
+ public RestThreadChannel Thread { get; private set; }
+
+ ///
+ IThreadChannel IMessage.Thread => Thread;
+
///
/// Gets a collection of the 's on the message.
///
@@ -80,15 +90,6 @@ namespace Discord.Rest
///
public MessageType Type { get; private set; }
-
- ///
- /// Gets the thread that was started from this message.
- ///
- ///
- /// A object if this message has thread attached; otherwise .
- ///
- public RestThreadChannel Thread { get; private set; }
-
///
public MessageRoleSubscriptionData RoleSubscriptionData { get; private set; }
@@ -266,9 +267,7 @@ namespace Discord.Rest
}
if (model.Thread.IsSpecified)
- {
Thread = RestThreadChannel.Create(Discord, new RestGuild(Discord, model.Thread.Value.GuildId.Value), model.Thread.Value);
- }
}
///
public async Task UpdateAsync(RequestOptions options = null)
@@ -310,7 +309,7 @@ namespace Discord.Rest
///
IReadOnlyCollection IMessage.Stickers => Stickers;
-
+
#endregion
///
diff --git a/src/Discord.Net.WebSocket/Entities/Messages/SocketMessage.cs b/src/Discord.Net.WebSocket/Entities/Messages/SocketMessage.cs
index df7d91bd0..197d476f5 100644
--- a/src/Discord.Net.WebSocket/Entities/Messages/SocketMessage.cs
+++ b/src/Discord.Net.WebSocket/Entities/Messages/SocketMessage.cs
@@ -81,6 +81,12 @@ namespace Discord.WebSocket
///
public MessageRoleSubscriptionData RoleSubscriptionData { get; private set; }
+ ///
+ public SocketThreadChannel Thread { get; private set; }
+
+ ///
+ IThreadChannel IMessage.Thread => Thread;
+
///
/// Returns all attachments included in this message.
///
@@ -283,6 +289,12 @@ namespace Discord.WebSocket
model.RoleSubscriptionData.Value.MonthsSubscribed,
model.RoleSubscriptionData.Value.IsRenewal);
}
+
+ if (model.Thread.IsSpecified)
+ {
+ SocketGuild guild = (Channel as SocketGuildChannel)?.Guild;
+ Thread = guild?.AddOrUpdateChannel(state, model.Thread.Value) as SocketThreadChannel;
+ }
}
///