Browse Source

feature: Support FailIfNotExists on MessageReference (#2283)

Fixes #2282
tags/3.7.0
moiph GitHub 3 years ago
parent
commit
0ec8938a67
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 21 additions and 4 deletions
  1. +13
    -2
      src/Discord.Net.Core/Entities/Messages/MessageReference.cs
  2. +3
    -0
      src/Discord.Net.Rest/API/Common/MessageReference.cs
  3. +2
    -1
      src/Discord.Net.Rest/Entities/Messages/RestMessage.cs
  4. +1
    -0
      src/Discord.Net.Rest/Extensions/EntityExtensions.cs
  5. +2
    -1
      src/Discord.Net.WebSocket/Entities/Messages/SocketMessage.cs

+ 13
- 2
src/Discord.Net.Core/Entities/Messages/MessageReference.cs View File

@@ -27,6 +27,12 @@ namespace Discord
/// </summary>
public Optional<ulong> GuildId { get; internal set; }

/// <summary>
/// Gets whether to error if the referenced message doesn't exist instead of sending as a normal (non-reply) message
/// Defaults to true.
/// </summary>
public Optional<bool> FailIfNotExists { get; internal set; }

/// <summary>
/// Initializes a new instance of the <see cref="MessageReference"/> class.
/// </summary>
@@ -39,16 +45,21 @@ namespace Discord
/// <param name="guildId">
/// The ID of the guild that will be referenced. It will be validated if sent.
/// </param>
public MessageReference(ulong? messageId = null, ulong? channelId = null, ulong? guildId = null)
/// <param name="failIfNotExists">
/// Whether to error if the referenced message doesn't exist instead of sending as a normal (non-reply) message. Defaults to true.
/// </param>
public MessageReference(ulong? messageId = null, ulong? channelId = null, ulong? guildId = null, bool? failIfNotExists = null)
{
MessageId = messageId ?? Optional.Create<ulong>();
InternalChannelId = channelId ?? Optional.Create<ulong>();
GuildId = guildId ?? Optional.Create<ulong>();
FailIfNotExists = failIfNotExists ?? Optional.Create<bool>();
}

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

public override string ToString()
=> DebuggerDisplay;


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

@@ -12,5 +12,8 @@ namespace Discord.API

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

[JsonProperty("fail_if_not_exists")]
public Optional<bool> FailIfNotExists { get; set; }
}
}

+ 2
- 1
src/Discord.Net.Rest/Entities/Messages/RestMessage.cs View File

@@ -144,7 +144,8 @@ namespace Discord.Rest
{
GuildId = model.Reference.Value.GuildId,
InternalChannelId = model.Reference.Value.ChannelId,
MessageId = model.Reference.Value.MessageId
MessageId = model.Reference.Value.MessageId,
FailIfNotExists = model.Reference.Value.FailIfNotExists
};
}



+ 1
- 0
src/Discord.Net.Rest/Extensions/EntityExtensions.cs View File

@@ -87,6 +87,7 @@ namespace Discord.Rest
ChannelId = entity.InternalChannelId,
GuildId = entity.GuildId,
MessageId = entity.MessageId,
FailIfNotExists = entity.FailIfNotExists
};
}
public static IEnumerable<string> EnumerateMentionTypes(this AllowedMentionTypes mentionTypes)


+ 2
- 1
src/Discord.Net.WebSocket/Entities/Messages/SocketMessage.cs View File

@@ -182,7 +182,8 @@ namespace Discord.WebSocket
{
GuildId = model.Reference.Value.GuildId,
InternalChannelId = model.Reference.Value.ChannelId,
MessageId = model.Reference.Value.MessageId
MessageId = model.Reference.Value.MessageId,
FailIfNotExists = model.Reference.Value.FailIfNotExists
};
}



Loading…
Cancel
Save