Browse Source

[ifcbrk] feature: suppress messages

yeah man I support the first amendment
tags/2.2.0
Christopher Felegy 5 years ago
parent
commit
cd288923c3
9 changed files with 65 additions and 2 deletions
  1. +7
    -0
      src/Discord.Net.Core/Entities/Messages/IMessage.cs
  2. +12
    -0
      src/Discord.Net.Core/Entities/Messages/IUserMessage.cs
  3. +2
    -0
      src/Discord.Net.Rest/API/Common/Message.cs
  4. +10
    -0
      src/Discord.Net.Rest/DiscordRestApiClient.cs
  5. +10
    -0
      src/Discord.Net.Rest/Entities/Messages/MessageHelper.cs
  6. +2
    -0
      src/Discord.Net.Rest/Entities/Messages/RestMessage.cs
  7. +10
    -1
      src/Discord.Net.Rest/Entities/Messages/RestUserMessage.cs
  8. +2
    -0
      src/Discord.Net.WebSocket/Entities/Messages/SocketMessage.cs
  9. +10
    -1
      src/Discord.Net.WebSocket/Entities/Messages/SocketUserMessage.cs

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

@@ -31,6 +31,13 @@ namespace Discord
/// </returns>
bool IsPinned { get; }
/// <summary>
/// Gets the value that indicates whether or not this message's embeds are suppressed.
/// </summary>
/// <returns>
/// <c>true</c> if the embeds in this message have been suppressed (made invisible); otherwise <c>false</c>.
/// </returns>
bool IsSuppressed { get; }
/// <summary>
/// Gets the content for this message.
/// </summary>
/// <returns>


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

@@ -29,6 +29,18 @@ namespace Discord
/// </returns>
Task ModifyAsync(Action<MessageProperties> func, RequestOptions options = null);
/// <summary>
/// Modifies the suppression of this message.
/// </summary>
/// <remarks>
/// This method modifies whether or not embeds in this message are suppressed (hidden).
/// </remarks>
/// <param name="suppressEmbeds">Whether or not embeds in this message should be suppressed.</param>
/// <param name="options">The options to be used when sending the request.</param>
/// <returns>
/// A task that represents the asynchronous modification operation.
/// </returns>
Task ModifySuppressionAsync(bool suppressEmbeds, RequestOptions options = null);
/// <summary>
/// Adds this message to its channel's pinned messages.
/// </summary>
/// <param name="options">The options to be used when sending the request.</param>


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

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

+ 10
- 0
src/Discord.Net.Rest/DiscordRestApiClient.cs View File

@@ -608,6 +608,16 @@ namespace Discord.API
return await SendJsonAsync<Message>("PATCH", () => $"channels/{channelId}/messages/{messageId}", args, ids, clientBucket: ClientBucketType.SendEdit, options: options).ConfigureAwait(false);
}

public async Task SuppressEmbedAsync(ulong channelId, ulong messageId, Rest.SuppressEmbedParams args, RequestOptions options = null)
{
Preconditions.NotEqual(channelId, 0, nameof(channelId));
Preconditions.NotEqual(messageId, 0, nameof(messageId));
options = RequestOptions.CreateOrClone(options);

var ids = new BucketIds(channelId: channelId);
await SendJsonAsync("POST", () => $"channels/{channelId}/messages/{messageId}/suppress-embeds", args, ids, options: options).ConfigureAwait(false);
}

public async Task AddReactionAsync(ulong channelId, ulong messageId, string emoji, RequestOptions options = null)
{
Preconditions.NotEqual(channelId, 0, nameof(channelId));


+ 10
- 0
src/Discord.Net.Rest/Entities/Messages/MessageHelper.cs View File

@@ -20,6 +20,7 @@ namespace Discord.Rest

var args = new MessageProperties();
func(args);

var apiArgs = new API.Rest.ModifyMessageParams
{
Content = args.Content,
@@ -35,6 +36,15 @@ namespace Discord.Rest
await client.ApiClient.DeleteMessageAsync(channelId, msgId, options).ConfigureAwait(false);
}

public static async Task SuppressEmbedsAsync(IMessage msg, BaseDiscordClient client, bool suppress, RequestOptions options)
{
var apiArgs = new API.Rest.SuppressEmbedParams
{
Suppressed = suppress
};
await client.ApiClient.SuppressEmbedAsync(msg.Channel.Id, msg.Id, apiArgs, options).ConfigureAwait(false);
}

public static async Task AddReactionAsync(IMessage msg, IEmote emote, BaseDiscordClient client, RequestOptions options)
{
await client.ApiClient.AddReactionAsync(msg.Channel.Id, msg.Id, emote is Emote e ? $"{e.Name}:{e.Id}" : emote.Name, options).ConfigureAwait(false);


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

@@ -33,6 +33,8 @@ namespace Discord.Rest
/// <inheritdoc />
public virtual bool IsPinned => false;
/// <inheritdoc />
public virtual bool IsSuppressed => false;
/// <inheritdoc />
public virtual DateTimeOffset? EditedTimestamp => null;
/// <summary>
/// Gets a collection of the <see cref="Attachment"/>'s on the message.


+ 10
- 1
src/Discord.Net.Rest/Entities/Messages/RestUserMessage.cs View File

@@ -14,7 +14,7 @@ namespace Discord.Rest
[DebuggerDisplay(@"{DebuggerDisplay,nq}")]
public class RestUserMessage : RestMessage, IUserMessage
{
private bool _isMentioningEveryone, _isTTS, _isPinned;
private bool _isMentioningEveryone, _isTTS, _isPinned, _isSuppressed;
private long? _editedTimestampTicks;
private ImmutableArray<Attachment> _attachments = ImmutableArray.Create<Attachment>();
private ImmutableArray<Embed> _embeds = ImmutableArray.Create<Embed>();
@@ -26,6 +26,8 @@ namespace Discord.Rest
/// <inheritdoc />
public override bool IsPinned => _isPinned;
/// <inheritdoc />
public override bool IsSuppressed => _isSuppressed;
/// <inheritdoc />
public override DateTimeOffset? EditedTimestamp => DateTimeUtils.FromTicks(_editedTimestampTicks);
/// <inheritdoc />
public override IReadOnlyCollection<Attachment> Attachments => _attachments;
@@ -65,6 +67,10 @@ namespace Discord.Rest
_editedTimestampTicks = model.EditedTimestamp.Value?.UtcTicks;
if (model.MentionEveryone.IsSpecified)
_isMentioningEveryone = model.MentionEveryone.Value;
if (model.Flags.IsSpecified)
{
_isSuppressed = model.Flags.Value.HasFlag(API.MessageFlags.Suppressed);
}

if (model.Attachments.IsSpecified)
{
@@ -163,6 +169,9 @@ namespace Discord.Rest
/// <inheritdoc />
public Task UnpinAsync(RequestOptions options = null)
=> MessageHelper.UnpinAsync(this, Discord, options);
/// <inheritdoc />
public Task ModifySuppressionAsync(bool suppressEmbeds, RequestOptions options = null)
=> MessageHelper.SuppressEmbedsAsync(this, Discord, suppressEmbeds, options);

public string Resolve(int startIndex, TagHandling userHandling = TagHandling.Name, TagHandling channelHandling = TagHandling.Name,
TagHandling roleHandling = TagHandling.Name, TagHandling everyoneHandling = TagHandling.Ignore, TagHandling emojiHandling = TagHandling.Name)


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

@@ -42,6 +42,8 @@ namespace Discord.WebSocket
/// <inheritdoc />
public virtual bool IsPinned => false;
/// <inheritdoc />
public virtual bool IsSuppressed => false;
/// <inheritdoc />
public virtual DateTimeOffset? EditedTimestamp => null;

/// <inheritdoc />


+ 10
- 1
src/Discord.Net.WebSocket/Entities/Messages/SocketUserMessage.cs View File

@@ -16,7 +16,7 @@ namespace Discord.WebSocket
public class SocketUserMessage : SocketMessage, IUserMessage
{
private readonly List<SocketReaction> _reactions = new List<SocketReaction>();
private bool _isMentioningEveryone, _isTTS, _isPinned;
private bool _isMentioningEveryone, _isTTS, _isPinned, _isSuppressed;
private long? _editedTimestampTicks;
private ImmutableArray<Attachment> _attachments = ImmutableArray.Create<Attachment>();
private ImmutableArray<Embed> _embeds = ImmutableArray.Create<Embed>();
@@ -27,6 +27,8 @@ namespace Discord.WebSocket
/// <inheritdoc />
public override bool IsPinned => _isPinned;
/// <inheritdoc />
public override bool IsSuppressed => _isSuppressed;
/// <inheritdoc />
public override DateTimeOffset? EditedTimestamp => DateTimeUtils.FromTicks(_editedTimestampTicks);
/// <inheritdoc />
public override IReadOnlyCollection<Attachment> Attachments => _attachments;
@@ -66,6 +68,10 @@ namespace Discord.WebSocket
_editedTimestampTicks = model.EditedTimestamp.Value?.UtcTicks;
if (model.MentionEveryone.IsSpecified)
_isMentioningEveryone = model.MentionEveryone.Value;
if (model.Flags.IsSpecified)
{
_isSuppressed = model.Flags.Value.HasFlag(API.MessageFlags.Suppressed);
}

if (model.Attachments.IsSpecified)
{
@@ -159,6 +165,9 @@ namespace Discord.WebSocket
/// <inheritdoc />
public Task UnpinAsync(RequestOptions options = null)
=> MessageHelper.UnpinAsync(this, Discord, options);
/// <inheritdoc />
public Task ModifySuppressionAsync(bool suppressEmbeds, RequestOptions options = null)
=> MessageHelper.SuppressEmbedsAsync(this, Discord, suppressEmbeds, options);

public string Resolve(int startIndex, TagHandling userHandling = TagHandling.Name, TagHandling channelHandling = TagHandling.Name,
TagHandling roleHandling = TagHandling.Name, TagHandling everyoneHandling = TagHandling.Ignore, TagHandling emojiHandling = TagHandling.Name)


Loading…
Cancel
Save