[ifcbrk] feature: suppress messages
yeah man I support the first amendment
This commit is contained in:
@@ -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>
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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; }
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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));
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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.
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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 />
|
||||
|
||||
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user