Added Message pinning
This commit is contained in:
@@ -20,12 +20,14 @@ namespace Discord.API
|
|||||||
[JsonProperty("tts")]
|
[JsonProperty("tts")]
|
||||||
public Optional<bool> IsTextToSpeech { get; set; }
|
public Optional<bool> IsTextToSpeech { get; set; }
|
||||||
[JsonProperty("mention_everyone")]
|
[JsonProperty("mention_everyone")]
|
||||||
public Optional<bool> IsMentioningEveryone { get; set; }
|
public Optional<bool> MentionEveryone { get; set; }
|
||||||
[JsonProperty("mentions")]
|
[JsonProperty("mentions")]
|
||||||
public Optional<User[]> Mentions { get; set; }
|
public Optional<User[]> Mentions { get; set; }
|
||||||
[JsonProperty("attachments")]
|
[JsonProperty("attachments")]
|
||||||
public Optional<Attachment[]> Attachments { get; set; }
|
public Optional<Attachment[]> Attachments { get; set; }
|
||||||
[JsonProperty("embeds")]
|
[JsonProperty("embeds")]
|
||||||
public Optional<Embed[]> Embeds { get; set; }
|
public Optional<Embed[]> Embeds { get; set; }
|
||||||
|
[JsonProperty("pinned")]
|
||||||
|
public Optional<bool> Pinned { get; set; }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -494,15 +494,37 @@ namespace Discord.API
|
|||||||
//Channel Permissions
|
//Channel Permissions
|
||||||
public async Task ModifyChannelPermissionsAsync(ulong channelId, ulong targetId, ModifyChannelPermissionsParams args, RequestOptions options = null)
|
public async Task ModifyChannelPermissionsAsync(ulong channelId, ulong targetId, ModifyChannelPermissionsParams args, RequestOptions options = null)
|
||||||
{
|
{
|
||||||
|
Preconditions.NotEqual(channelId, 0, nameof(channelId));
|
||||||
|
Preconditions.NotEqual(targetId, 0, nameof(targetId));
|
||||||
Preconditions.NotNull(args, nameof(args));
|
Preconditions.NotNull(args, nameof(args));
|
||||||
|
|
||||||
await SendAsync("PUT", $"channels/{channelId}/permissions/{targetId}", args, options: options).ConfigureAwait(false);
|
await SendAsync("PUT", $"channels/{channelId}/permissions/{targetId}", args, options: options).ConfigureAwait(false);
|
||||||
}
|
}
|
||||||
public async Task DeleteChannelPermissionAsync(ulong channelId, ulong targetId, RequestOptions options = null)
|
public async Task DeleteChannelPermissionAsync(ulong channelId, ulong targetId, RequestOptions options = null)
|
||||||
{
|
{
|
||||||
|
Preconditions.NotEqual(channelId, 0, nameof(channelId));
|
||||||
|
Preconditions.NotEqual(targetId, 0, nameof(targetId));
|
||||||
|
|
||||||
await SendAsync("DELETE", $"channels/{channelId}/permissions/{targetId}", options: options).ConfigureAwait(false);
|
await SendAsync("DELETE", $"channels/{channelId}/permissions/{targetId}", options: options).ConfigureAwait(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//Channel Pins
|
||||||
|
public async Task AddPinAsync(ulong channelId, ulong messageId, RequestOptions options = null)
|
||||||
|
{
|
||||||
|
Preconditions.GreaterThan(channelId, 0, nameof(channelId));
|
||||||
|
Preconditions.GreaterThan(messageId, 0, nameof(messageId));
|
||||||
|
|
||||||
|
await SendAsync("PUT", $"channels/{channelId}/pins/{messageId}", options: options).ConfigureAwait(false);
|
||||||
|
|
||||||
|
}
|
||||||
|
public async Task RemovePinAsync(ulong channelId, ulong messageId, RequestOptions options = null)
|
||||||
|
{
|
||||||
|
Preconditions.NotEqual(channelId, 0, nameof(channelId));
|
||||||
|
Preconditions.NotEqual(messageId, 0, nameof(messageId));
|
||||||
|
|
||||||
|
await SendAsync("DELETE", $"channels/{channelId}/pins/{messageId}", options: options).ConfigureAwait(false);
|
||||||
|
}
|
||||||
|
|
||||||
//Guilds
|
//Guilds
|
||||||
public async Task<Guild> GetGuildAsync(ulong guildId, RequestOptions options = null)
|
public async Task<Guild> GetGuildAsync(ulong guildId, RequestOptions options = null)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -11,6 +11,8 @@ namespace Discord
|
|||||||
DateTimeOffset? EditedTimestamp { get; }
|
DateTimeOffset? EditedTimestamp { get; }
|
||||||
/// <summary> Returns true if this message was sent as a text-to-speech message. </summary>
|
/// <summary> Returns true if this message was sent as a text-to-speech message. </summary>
|
||||||
bool IsTTS { get; }
|
bool IsTTS { get; }
|
||||||
|
/// <summary> Returns true if this message was added to its channel's pinned messages. </summary>
|
||||||
|
bool IsPinned { get; }
|
||||||
/// <summary> Returns the original, unprocessed text for this message. </summary>
|
/// <summary> Returns the original, unprocessed text for this message. </summary>
|
||||||
string RawText { get; }
|
string RawText { get; }
|
||||||
/// <summary> Returns the text for this message after mention processing. </summary>
|
/// <summary> Returns the text for this message after mention processing. </summary>
|
||||||
@@ -35,5 +37,9 @@ namespace Discord
|
|||||||
|
|
||||||
/// <summary> Modifies this message. </summary>
|
/// <summary> Modifies this message. </summary>
|
||||||
Task ModifyAsync(Action<ModifyMessageParams> func);
|
Task ModifyAsync(Action<ModifyMessageParams> func);
|
||||||
|
/// <summary> Adds this message to its channel's pinned messages. </summary>
|
||||||
|
Task PinAsync();
|
||||||
|
/// <summary> Removes this message from its channel's pinned messages. </summary>
|
||||||
|
Task UnpinAsync();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -18,6 +18,7 @@ namespace Discord
|
|||||||
public bool IsTTS { get; private set; }
|
public bool IsTTS { get; private set; }
|
||||||
public string RawText { get; private set; }
|
public string RawText { get; private set; }
|
||||||
public string Text { get; private set; }
|
public string Text { get; private set; }
|
||||||
|
public bool IsPinned { get; private set; }
|
||||||
|
|
||||||
public IMessageChannel Channel { get; }
|
public IMessageChannel Channel { get; }
|
||||||
public IUser Author { get; }
|
public IUser Author { get; }
|
||||||
@@ -57,13 +58,15 @@ namespace Discord
|
|||||||
|
|
||||||
if (model.IsTextToSpeech.IsSpecified)
|
if (model.IsTextToSpeech.IsSpecified)
|
||||||
IsTTS = model.IsTextToSpeech.Value;
|
IsTTS = model.IsTextToSpeech.Value;
|
||||||
|
if (model.Pinned.IsSpecified)
|
||||||
|
IsPinned = model.Pinned.Value;
|
||||||
if (model.Timestamp.IsSpecified)
|
if (model.Timestamp.IsSpecified)
|
||||||
_timestampTicks = model.Timestamp.Value.UtcTicks;
|
_timestampTicks = model.Timestamp.Value.UtcTicks;
|
||||||
if (model.EditedTimestamp.IsSpecified)
|
if (model.EditedTimestamp.IsSpecified)
|
||||||
_editedTimestampTicks = model.EditedTimestamp.Value?.UtcTicks;
|
_editedTimestampTicks = model.EditedTimestamp.Value?.UtcTicks;
|
||||||
if (model.IsMentioningEveryone.IsSpecified)
|
if (model.MentionEveryone.IsSpecified)
|
||||||
_isMentioningEveryone = model.IsMentioningEveryone.Value;
|
_isMentioningEveryone = model.MentionEveryone.Value;
|
||||||
|
|
||||||
if (model.Attachments.IsSpecified)
|
if (model.Attachments.IsSpecified)
|
||||||
{
|
{
|
||||||
var value = model.Attachments.Value;
|
var value = model.Attachments.Value;
|
||||||
@@ -144,6 +147,9 @@ namespace Discord
|
|||||||
model = await Discord.ApiClient.ModifyMessageAsync(guildChannel.Guild.Id, Channel.Id, Id, args).ConfigureAwait(false);
|
model = await Discord.ApiClient.ModifyMessageAsync(guildChannel.Guild.Id, Channel.Id, Id, args).ConfigureAwait(false);
|
||||||
else
|
else
|
||||||
model = await Discord.ApiClient.ModifyDMMessageAsync(Channel.Id, Id, args).ConfigureAwait(false);
|
model = await Discord.ApiClient.ModifyDMMessageAsync(Channel.Id, Id, args).ConfigureAwait(false);
|
||||||
|
{
|
||||||
|
await Discord.ApiClient.AddPinAsync(Channel.Id, Id).ConfigureAwait(false);
|
||||||
|
}
|
||||||
Update(model, UpdateSource.Rest);
|
Update(model, UpdateSource.Rest);
|
||||||
}
|
}
|
||||||
public async Task DeleteAsync()
|
public async Task DeleteAsync()
|
||||||
@@ -154,6 +160,16 @@ namespace Discord
|
|||||||
else
|
else
|
||||||
await Discord.ApiClient.DeleteDMMessageAsync(Channel.Id, Id).ConfigureAwait(false);
|
await Discord.ApiClient.DeleteDMMessageAsync(Channel.Id, Id).ConfigureAwait(false);
|
||||||
}
|
}
|
||||||
|
/// <summary> Adds this message to its channel's pinned messages. </summary>
|
||||||
|
public async Task PinAsync()
|
||||||
|
{
|
||||||
|
await Discord.ApiClient.AddPinAsync(Channel.Id, Id).ConfigureAwait(false);
|
||||||
|
}
|
||||||
|
/// <summary> Removes this message from its channel's pinned messages. </summary>
|
||||||
|
public async Task UnpinAsync()
|
||||||
|
{
|
||||||
|
await Discord.ApiClient.RemovePinAsync(Channel.Id, Id).ConfigureAwait(false);
|
||||||
|
}
|
||||||
|
|
||||||
public override string ToString() => Text;
|
public override string ToString() => Text;
|
||||||
private string DebuggerDisplay => $"{Author}: {Text}{(Attachments.Length > 0 ? $" [{Attachments.Length} Attachments]" : "")}";
|
private string DebuggerDisplay => $"{Author}: {Text}{(Attachments.Length > 0 ? $" [{Attachments.Length} Attachments]" : "")}";
|
||||||
|
|||||||
Reference in New Issue
Block a user