This commit adds GET /channels/{id}/pins to the ApiClient, and adds GetPinnedMessagesAsync to IMessageChannel. This method is only implemented on the REST entities, and the WebSocket entities do not include an override to retrieve pinned messages from cache.tags/1.0-rc
@@ -357,6 +357,12 @@ namespace Discord.API | |||||
await SendAsync("DELETE", $"channels/{channelId}/pins/{messageId}", options: options).ConfigureAwait(false); | await SendAsync("DELETE", $"channels/{channelId}/pins/{messageId}", options: options).ConfigureAwait(false); | ||||
} | } | ||||
public async Task<IReadOnlyCollection<Message>> GetPinsAsync(ulong channelId, RequestOptions options = null) | |||||
{ | |||||
Preconditions.NotEqual(channelId, 0, nameof(channelId)); | |||||
return await SendAsync<IReadOnlyCollection<Message>>("GET", $"channels/{channelId}/pins", options: options).ConfigureAwait(false); | |||||
} | |||||
//Channel Recipients | //Channel Recipients | ||||
public async Task AddGroupRecipientAsync(ulong channelId, ulong userId, RequestOptions options = null) | public async Task AddGroupRecipientAsync(ulong channelId, ulong userId, RequestOptions options = null) | ||||
@@ -23,6 +23,8 @@ namespace Discord | |||||
Task<IReadOnlyCollection<IMessage>> GetMessagesAsync(int limit = DiscordConfig.MaxMessagesPerBatch); | Task<IReadOnlyCollection<IMessage>> GetMessagesAsync(int limit = DiscordConfig.MaxMessagesPerBatch); | ||||
/// <summary> Gets a collection of messages in this channel. </summary> | /// <summary> Gets a collection of messages in this channel. </summary> | ||||
Task<IReadOnlyCollection<IMessage>> GetMessagesAsync(ulong fromMessageId, Direction dir, int limit = DiscordConfig.MaxMessagesPerBatch); | Task<IReadOnlyCollection<IMessage>> GetMessagesAsync(ulong fromMessageId, Direction dir, int limit = DiscordConfig.MaxMessagesPerBatch); | ||||
/// <summary> Gets a collection of pinned messages in this channel. </summary> | |||||
Task<IReadOnlyCollection<IMessage>> GetPinnedMessagesAsync(); | |||||
/// <summary> Bulk deletes multiple messages. </summary> | /// <summary> Bulk deletes multiple messages. </summary> | ||||
Task DeleteMessagesAsync(IEnumerable<IMessage> messages); | Task DeleteMessagesAsync(IEnumerable<IMessage> messages); | ||||
@@ -108,6 +108,11 @@ namespace Discord | |||||
{ | { | ||||
await Discord.ApiClient.DeleteDMMessagesAsync(Id, new DeleteMessagesParams { MessageIds = messages.Select(x => x.Id) }).ConfigureAwait(false); | await Discord.ApiClient.DeleteDMMessagesAsync(Id, new DeleteMessagesParams { MessageIds = messages.Select(x => x.Id) }).ConfigureAwait(false); | ||||
} | } | ||||
public async Task<IReadOnlyCollection<IMessage>> GetPinnedMessagesAsync() | |||||
{ | |||||
var models = await Discord.ApiClient.GetPinsAsync(Id); | |||||
return models.Select(x => new Message(this, new User(x.Author.Value), x)).ToImmutableArray(); | |||||
} | |||||
public async Task TriggerTypingAsync() | public async Task TriggerTypingAsync() | ||||
{ | { | ||||
@@ -133,6 +133,11 @@ namespace Discord | |||||
{ | { | ||||
await Discord.ApiClient.DeleteDMMessagesAsync(Id, new DeleteMessagesParams { MessageIds = messages.Select(x => x.Id) }).ConfigureAwait(false); | await Discord.ApiClient.DeleteDMMessagesAsync(Id, new DeleteMessagesParams { MessageIds = messages.Select(x => x.Id) }).ConfigureAwait(false); | ||||
} | } | ||||
public async Task<IReadOnlyCollection<IMessage>> GetPinnedMessagesAsync() | |||||
{ | |||||
var models = await Discord.ApiClient.GetPinsAsync(Id); | |||||
return models.Select(x => new Message(this, new User(x.Author.Value), x)).ToImmutableArray(); | |||||
} | |||||
public async Task TriggerTypingAsync() | public async Task TriggerTypingAsync() | ||||
{ | { | ||||
@@ -102,7 +102,12 @@ namespace Discord | |||||
{ | { | ||||
await Discord.ApiClient.DeleteMessagesAsync(Guild.Id, Id, new DeleteMessagesParams { MessageIds = messages.Select(x => x.Id) }).ConfigureAwait(false); | await Discord.ApiClient.DeleteMessagesAsync(Guild.Id, Id, new DeleteMessagesParams { MessageIds = messages.Select(x => x.Id) }).ConfigureAwait(false); | ||||
} | } | ||||
public async Task<IReadOnlyCollection<IMessage>> GetPinnedMessagesAsync() | |||||
{ | |||||
var models = await Discord.ApiClient.GetPinsAsync(Id); | |||||
return models.Select(x => new Message(this, new User(x.Author.Value), x)).ToImmutableArray(); | |||||
} | |||||
public async Task TriggerTypingAsync() | public async Task TriggerTypingAsync() | ||||
{ | { | ||||
await Discord.ApiClient.TriggerTypingIndicatorAsync(Id).ConfigureAwait(false); | await Discord.ApiClient.TriggerTypingIndicatorAsync(Id).ConfigureAwait(false); | ||||