* Implement * Add IMentionable to RestThreadUser * Rather move mentionable to interface for consistency. * Further consistencytags/3.2.1
@@ -0,0 +1,25 @@ | |||||
using System; | |||||
namespace Discord | |||||
{ | |||||
/// <summary> | |||||
/// Represents a Discord thread user. | |||||
/// </summary> | |||||
public interface IThreadUser : IMentionable | |||||
{ | |||||
/// <summary> | |||||
/// Gets the <see cref="IThreadChannel"/> this user is in. | |||||
/// </summary> | |||||
IThreadChannel Thread { get; } | |||||
/// <summary> | |||||
/// Gets the timestamp for when this user joined this thread. | |||||
/// </summary> | |||||
DateTimeOffset ThreadJoinedAt { get; } | |||||
/// <summary> | |||||
/// Gets the guild this thread was created in. | |||||
/// </summary> | |||||
IGuild Guild { get; } | |||||
} | |||||
} |
@@ -7,23 +7,20 @@ namespace Discord.Rest | |||||
/// <summary> | /// <summary> | ||||
/// Represents a thread user received over the REST api. | /// Represents a thread user received over the REST api. | ||||
/// </summary> | /// </summary> | ||||
public class RestThreadUser : RestEntity<ulong> | |||||
public class RestThreadUser : RestEntity<ulong>, IThreadUser | |||||
{ | { | ||||
/// <summary> | |||||
/// Gets the <see cref="RestThreadChannel"/> this user is in. | |||||
/// </summary> | |||||
/// <inheritdoc/> | |||||
public IThreadChannel Thread { get; } | public IThreadChannel Thread { get; } | ||||
/// <summary> | |||||
/// Gets the timestamp for when this user joined this thread. | |||||
/// </summary> | |||||
public DateTimeOffset JoinedAt { get; private set; } | |||||
/// <inheritdoc/> | |||||
public DateTimeOffset ThreadJoinedAt { get; private set; } | |||||
/// <summary> | |||||
/// Gets the guild this user is in. | |||||
/// </summary> | |||||
/// <inheritdoc/> | |||||
public IGuild Guild { get; } | public IGuild Guild { get; } | ||||
/// <inheritdoc/> | |||||
public string Mention => MentionUtils.MentionUser(Id); | |||||
internal RestThreadUser(BaseDiscordClient discord, IGuild guild, IThreadChannel channel, ulong id) | internal RestThreadUser(BaseDiscordClient discord, IGuild guild, IThreadChannel channel, ulong id) | ||||
: base(discord, id) | : base(discord, id) | ||||
{ | { | ||||
@@ -40,7 +37,7 @@ namespace Discord.Rest | |||||
internal void Update(Model model) | internal void Update(Model model) | ||||
{ | { | ||||
JoinedAt = model.JoinTimestamp; | |||||
ThreadJoinedAt = model.JoinTimestamp; | |||||
} | } | ||||
/// <summary> | /// <summary> | ||||
@@ -10,16 +10,14 @@ namespace Discord.WebSocket | |||||
/// <summary> | /// <summary> | ||||
/// Represents a thread user received over the gateway. | /// Represents a thread user received over the gateway. | ||||
/// </summary> | /// </summary> | ||||
public class SocketThreadUser : SocketUser, IGuildUser | |||||
public class SocketThreadUser : SocketUser, IThreadUser, IGuildUser | |||||
{ | { | ||||
/// <summary> | /// <summary> | ||||
/// Gets the <see cref="SocketThreadChannel"/> this user is in. | /// Gets the <see cref="SocketThreadChannel"/> this user is in. | ||||
/// </summary> | /// </summary> | ||||
public SocketThreadChannel Thread { get; private set; } | public SocketThreadChannel Thread { get; private set; } | ||||
/// <summary> | |||||
/// Gets the timestamp for when this user joined this thread. | |||||
/// </summary> | |||||
/// <inheritdoc/> | |||||
public DateTimeOffset ThreadJoinedAt { get; private set; } | public DateTimeOffset ThreadJoinedAt { get; private set; } | ||||
/// <summary> | /// <summary> | ||||
@@ -180,8 +178,12 @@ namespace Discord.WebSocket | |||||
/// <inheritdoc/> | /// <inheritdoc/> | ||||
public Task RemoveTimeOutAsync(RequestOptions options = null) => GuildUser.RemoveTimeOutAsync(options); | public Task RemoveTimeOutAsync(RequestOptions options = null) => GuildUser.RemoveTimeOutAsync(options); | ||||
/// <inheritdoc/> | /// <inheritdoc/> | ||||
GuildPermissions IGuildUser.GuildPermissions => GuildUser.GuildPermissions; | |||||
IThreadChannel IThreadUser.Thread => Thread; | |||||
/// <inheritdoc/> | |||||
IGuild IThreadUser.Guild => Guild; | |||||
/// <inheritdoc/> | /// <inheritdoc/> | ||||
IGuild IGuildUser.Guild => Guild; | IGuild IGuildUser.Guild => Guild; | ||||
@@ -189,6 +191,9 @@ namespace Discord.WebSocket | |||||
/// <inheritdoc/> | /// <inheritdoc/> | ||||
ulong IGuildUser.GuildId => Guild.Id; | ulong IGuildUser.GuildId => Guild.Id; | ||||
/// <inheritdoc/> | |||||
GuildPermissions IGuildUser.GuildPermissions => GuildUser.GuildPermissions; | |||||
/// <inheritdoc/> | /// <inheritdoc/> | ||||
IReadOnlyCollection<ulong> IGuildUser.RoleIds => GuildUser.Roles.Select(x => x.Id).ToImmutableArray(); | IReadOnlyCollection<ulong> IGuildUser.RoleIds => GuildUser.Roles.Select(x => x.Id).ToImmutableArray(); | ||||