Browse Source

feature: Implemented Message Reference Property (#1413)

* Added support for Message References

* Removed unused usings, added debugger display, updated ToString override

* Changed snowflakes to be wrapped in an optional instead of a nullable.
tags/2.2.0
Neuheit Christopher F 5 years ago
parent
commit
f86c39de6a
6 changed files with 90 additions and 0 deletions
  1. +12
    -0
      src/Discord.Net.Core/Entities/Messages/IMessage.cs
  2. +33
    -0
      src/Discord.Net.Core/Entities/Messages/MessageReference.cs
  3. +2
    -0
      src/Discord.Net.Rest/API/Common/Message.cs
  4. +16
    -0
      src/Discord.Net.Rest/API/Common/MessageReference.cs
  5. +13
    -0
      src/Discord.Net.Rest/Entities/Messages/RestMessage.cs
  6. +14
    -0
      src/Discord.Net.WebSocket/Entities/Messages/SocketMessage.cs

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

@@ -140,6 +140,18 @@ namespace Discord
/// </returns>
MessageApplication Application { get; }

/// <summary>
/// Gets the reference to the original message if it was crossposted.
/// </summary>
/// <remarks>
/// Sent with Cross-posted messages, meaning they were published from news channels
/// and received by subscriber channels.
/// </remarks>
/// <returns>
/// A message's reference, if any is associated.
/// </returns>
MessageReference Reference { get; }

/// <summary>
/// Gets all reactions included in this message.
/// </summary>


+ 33
- 0
src/Discord.Net.Core/Entities/Messages/MessageReference.cs View File

@@ -0,0 +1,33 @@
using System.Diagnostics;

namespace Discord
{
/// <summary>
/// Contains the IDs sent from a crossposted message.
/// </summary>
[DebuggerDisplay(@"{DebuggerDisplay,nq}")]
public class MessageReference
{
/// <summary>
/// Gets the Message ID of the original message.
/// </summary>
public Optional<ulong> MessageId { get; internal set; }

/// <summary>
/// Gets the Channel ID of the original message.
/// </summary>
public ulong ChannelId { get; internal set; }

/// <summary>
/// Gets the Guild ID of the original message.
/// </summary>
public Optional<ulong> GuildId { get; internal set; }

private string DebuggerDisplay
=> $"Channel ID: ({ChannelId}){(GuildId.IsSpecified ? $", Guild ID: ({GuildId.Value})" : "")}" +
$"{(MessageId.IsSpecified ? $", Message ID: ({MessageId.Value})" : "")}";

public override string ToString()
=> DebuggerDisplay;
}
}

+ 2
- 0
src/Discord.Net.Rest/API/Common/Message.cs View File

@@ -50,6 +50,8 @@ namespace Discord.API
// sent with Rich Presence-related chat embeds
[JsonProperty("application")]
public Optional<MessageApplication> Application { get; set; }
[JsonProperty("message_reference")]
public Optional<MessageReference> Reference { get; set; }
[JsonProperty("flags")]
public Optional<MessageFlags> Flags { get; set; }
}


+ 16
- 0
src/Discord.Net.Rest/API/Common/MessageReference.cs View File

@@ -0,0 +1,16 @@
using Newtonsoft.Json;

namespace Discord.API
{
internal class MessageReference
{
[JsonProperty("message_id")]
public Optional<ulong> MessageId { get; set; }

[JsonProperty("channel_id")]
public ulong ChannelId { get; set; }

[JsonProperty("guild_id")]
public Optional<ulong> GuildId { get; set; }
}
}

+ 13
- 0
src/Discord.Net.Rest/Entities/Messages/RestMessage.cs View File

@@ -62,6 +62,8 @@ namespace Discord.Rest
public MessageActivity Activity { get; private set; }
/// <inheritdoc />
public MessageApplication Application { get; private set; }
/// <inheritdoc />
public MessageReference Reference { get; private set; }

internal RestMessage(BaseDiscordClient discord, ulong id, IMessageChannel channel, IUser author, MessageSource source)
: base(discord, id)
@@ -108,6 +110,17 @@ namespace Discord.Rest
};
}

if(model.Reference.IsSpecified)
{
// Creates a new Reference from the API model
Reference = new MessageReference
{
GuildId = model.Reference.Value.GuildId,
ChannelId = model.Reference.Value.ChannelId,
MessageId = model.Reference.Value.MessageId
};
}

if (model.Reactions.IsSpecified)
{
var value = model.Reactions.Value;


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

@@ -53,6 +53,9 @@ namespace Discord.WebSocket
/// <inheritdoc />
public MessageApplication Application { get; private set; }

/// <inheritdoc />
public MessageReference Reference { get; private set; }

/// <summary>
/// Returns all attachments included in this message.
/// </summary>
@@ -140,6 +143,17 @@ namespace Discord.WebSocket
PartyId = model.Activity.Value.PartyId.Value
};
}

if (model.Reference.IsSpecified)
{
// Creates a new Reference from the API model
Reference = new MessageReference
{
GuildId = model.Reference.Value.GuildId,
ChannelId = model.Reference.Value.ChannelId,
MessageId = model.Reference.Value.MessageId
};
}
}

/// <inheritdoc />


Loading…
Cancel
Save