@@ -44,7 +44,7 @@ namespace Discord.WebSocket
/// <summary>
/// <summary>
/// Gets the parent channel this thread resides in.
/// Gets the parent channel this thread resides in.
/// </summary>
/// </summary>
public SocketText Channel ParentChannel { get; private set; }
public SocketGuild Channel ParentChannel { get; private set; }
/// <inheritdoc/>
/// <inheritdoc/>
public int MessageCount { get; private set; }
public int MessageCount { get; private set; }
@@ -64,6 +64,12 @@ namespace Discord.WebSocket
/// <inheritdoc/>
/// <inheritdoc/>
public bool IsLocked { get; private set; }
public bool IsLocked { get; private set; }
/// <inheritdoc/>
public bool? IsInvitable { get; private set; }
/// <inheritdoc cref="IThreadChannel.CreatedAt"/>
public override DateTimeOffset CreatedAt { get; }
/// <summary>
/// <summary>
/// Gets a collection of cached users within this thread.
/// Gets a collection of cached users within this thread.
/// </summary>
/// </summary>
@@ -78,17 +84,19 @@ namespace Discord.WebSocket
private readonly object _downloadLock = new object();
private readonly object _downloadLock = new object();
internal SocketThreadChannel(DiscordSocketClient discord, SocketGuild guild, ulong id, SocketTextChannel parent)
internal SocketThreadChannel(DiscordSocketClient discord, SocketGuild guild, ulong id, SocketGuildChannel parent,
DateTimeOffset? createdAt)
: base(discord, id, guild)
: base(discord, id, guild)
{
{
ParentChannel = parent;
ParentChannel = parent;
_members = new ConcurrentDictionary<ulong, SocketThreadUser>();
_members = new ConcurrentDictionary<ulong, SocketThreadUser>();
CreatedAt = createdAt ?? new DateTimeOffset(2022, 1, 9, 0, 0, 0, TimeSpan.Zero);
}
}
internal new static SocketThreadChannel Create(SocketGuild guild, ClientState state, Model model)
internal new static SocketThreadChannel Create(SocketGuild guild, ClientState state, Model model)
{
{
var parent = (SocketTextChannel) guild.GetChannel(model.CategoryId.Value);
var entity = new SocketThreadChannel(guild.Discord, guild, model.Id, parent);
var parent = guild.GetChannel(model.CategoryId.Value);
var entity = new SocketThreadChannel(guild.Discord, guild, model.Id, parent, model.ThreadMetadata.GetValueOrDefault()?.CreatedAt.ToNullable() );
entity.Update(state, model);
entity.Update(state, model);
return entity;
return entity;
}
}
@@ -103,6 +111,7 @@ namespace Discord.WebSocket
if (model.ThreadMetadata.IsSpecified)
if (model.ThreadMetadata.IsSpecified)
{
{
IsInvitable = model.ThreadMetadata.Value.Invitable.ToNullable();
IsArchived = model.ThreadMetadata.Value.Archived;
IsArchived = model.ThreadMetadata.Value.Archived;
ArchiveTimestamp = model.ThreadMetadata.Value.ArchiveTimestamp;
ArchiveTimestamp = model.ThreadMetadata.Value.ArchiveTimestamp;
AutoArchiveDuration = model.ThreadMetadata.Value.AutoArchiveDuration;
AutoArchiveDuration = model.ThreadMetadata.Value.AutoArchiveDuration;