Browse Source

[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
pull/2585/head
Misha133 GitHub 2 years ago
parent
commit
0998285f83
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 31 additions and 12 deletions
  1. +8
    -0
      src/Discord.Net.Core/Entities/Messages/IMessage.cs
  2. +11
    -12
      src/Discord.Net.Rest/Entities/Messages/RestMessage.cs
  3. +12
    -0
      src/Discord.Net.WebSocket/Entities/Messages/SocketMessage.cs

+ 8
- 0
src/Discord.Net.Core/Entities/Messages/IMessage.cs View File

@@ -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>


+ 11
- 12
src/Discord.Net.Rest/Entities/Messages/RestMessage.cs View File

@@ -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,9 +267,7 @@ 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)
@@ -310,7 +309,7 @@ namespace Discord.Rest


/// <inheritdoc /> /// <inheritdoc />
IReadOnlyCollection<IStickerItem> IMessage.Stickers => Stickers; IReadOnlyCollection<IStickerItem> IMessage.Stickers => Stickers;
#endregion #endregion


/// <inheritdoc /> /// <inheritdoc />


+ 12
- 0
src/Discord.Net.WebSocket/Entities/Messages/SocketMessage.cs View File

@@ -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 />


Loading…
Cancel
Save