[Feature] Rework Thread property of a message (#2579)
* move `Thread` property to `IUserMessage` & add one to `SocketUserMessage` * get channel from cache instead of creating new object * move the property back to IMessage
This commit is contained in:
@@ -89,6 +89,14 @@ namespace Discord
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
IUser Author { get; }
|
IUser Author { get; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Gets the thread that was started from this message.
|
||||||
|
/// </summary>
|
||||||
|
/// <returns>
|
||||||
|
/// An <see cref="IThreadChannel"/> object if this message has thread attached; otherwise <see langword="null"/>.
|
||||||
|
/// </returns>
|
||||||
|
IThreadChannel Thread { get; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Gets all attachments included in this message.
|
/// Gets all attachments included in this message.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|||||||
@@ -1,9 +1,13 @@
|
|||||||
|
using Discord.API;
|
||||||
|
|
||||||
using Newtonsoft.Json.Linq;
|
using Newtonsoft.Json.Linq;
|
||||||
|
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Collections.Immutable;
|
using System.Collections.Immutable;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
using Model = Discord.API.Message;
|
using Model = Discord.API.Message;
|
||||||
|
|
||||||
namespace Discord.Rest
|
namespace Discord.Rest
|
||||||
@@ -45,6 +49,12 @@ namespace Discord.Rest
|
|||||||
/// <inheritdoc />
|
/// <inheritdoc />
|
||||||
public virtual bool MentionedEveryone => false;
|
public virtual bool MentionedEveryone => false;
|
||||||
|
|
||||||
|
/// <inheritdoc cref="IMessage.Thread"/>
|
||||||
|
public RestThreadChannel Thread { get; private set; }
|
||||||
|
|
||||||
|
/// <inheritdoc />
|
||||||
|
IThreadChannel IMessage.Thread => Thread;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Gets a collection of the <see cref="Attachment"/>'s on the message.
|
/// Gets a collection of the <see cref="Attachment"/>'s on the message.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@@ -80,15 +90,6 @@ namespace Discord.Rest
|
|||||||
/// <inheritdoc/>
|
/// <inheritdoc/>
|
||||||
public MessageType Type { get; private set; }
|
public MessageType Type { get; private set; }
|
||||||
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Gets the thread that was started from this message.
|
|
||||||
/// </summary>
|
|
||||||
/// <returns>
|
|
||||||
/// A <see cref="RestThreadChannel"/> object if this message has thread attached; otherwise <see langword="null"/>.
|
|
||||||
/// </returns>
|
|
||||||
public RestThreadChannel Thread { get; private set; }
|
|
||||||
|
|
||||||
/// <inheritdoc />
|
/// <inheritdoc />
|
||||||
public MessageRoleSubscriptionData RoleSubscriptionData { get; private set; }
|
public MessageRoleSubscriptionData RoleSubscriptionData { get; private set; }
|
||||||
|
|
||||||
@@ -266,10 +267,8 @@ namespace Discord.Rest
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (model.Thread.IsSpecified)
|
if (model.Thread.IsSpecified)
|
||||||
{
|
|
||||||
Thread = RestThreadChannel.Create(Discord, new RestGuild(Discord, model.Thread.Value.GuildId.Value), model.Thread.Value);
|
Thread = RestThreadChannel.Create(Discord, new RestGuild(Discord, model.Thread.Value.GuildId.Value), model.Thread.Value);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
/// <inheritdoc />
|
/// <inheritdoc />
|
||||||
public async Task UpdateAsync(RequestOptions options = null)
|
public async Task UpdateAsync(RequestOptions options = null)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -81,6 +81,12 @@ namespace Discord.WebSocket
|
|||||||
/// <inheritdoc />
|
/// <inheritdoc />
|
||||||
public MessageRoleSubscriptionData RoleSubscriptionData { get; private set; }
|
public MessageRoleSubscriptionData RoleSubscriptionData { get; private set; }
|
||||||
|
|
||||||
|
/// <inheritdoc cref="IMessage.Thread"/>
|
||||||
|
public SocketThreadChannel Thread { get; private set; }
|
||||||
|
|
||||||
|
/// <inheritdoc />
|
||||||
|
IThreadChannel IMessage.Thread => Thread;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Returns all attachments included in this message.
|
/// Returns all attachments included in this message.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@@ -283,6 +289,12 @@ namespace Discord.WebSocket
|
|||||||
model.RoleSubscriptionData.Value.MonthsSubscribed,
|
model.RoleSubscriptionData.Value.MonthsSubscribed,
|
||||||
model.RoleSubscriptionData.Value.IsRenewal);
|
model.RoleSubscriptionData.Value.IsRenewal);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (model.Thread.IsSpecified)
|
||||||
|
{
|
||||||
|
SocketGuild guild = (Channel as SocketGuildChannel)?.Guild;
|
||||||
|
Thread = guild?.AddOrUpdateChannel(state, model.Thread.Value) as SocketThreadChannel;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <inheritdoc />
|
/// <inheritdoc />
|
||||||
|
|||||||
Reference in New Issue
Block a user