Support GET /channels/{id}/pins
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.
This commit is contained in:
@@ -357,6 +357,12 @@ namespace Discord.API
|
||||
|
||||
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
|
||||
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);
|
||||
/// <summary> Gets a collection of messages in this channel. </summary>
|
||||
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>
|
||||
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);
|
||||
}
|
||||
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()
|
||||
{
|
||||
|
||||
@@ -133,6 +133,11 @@ namespace Discord
|
||||
{
|
||||
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()
|
||||
{
|
||||
|
||||
@@ -102,7 +102,12 @@ namespace Discord
|
||||
{
|
||||
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()
|
||||
{
|
||||
await Discord.ApiClient.TriggerTypingIndicatorAsync(Id).ConfigureAwait(false);
|
||||
|
||||
Reference in New Issue
Block a user