Audit Logs implementation (#1055)
* Copy audit logs impl from old branch and clean up I suck at using git, so I'm gonna use brute force. * Remove unnecessary TODOs Category channels do not provide any new information, and the other I forgot to remove beforehand * Add invite update data, clean up after feedback * Remove TODOs, add WebhookType enum for future use WebhookType is a future-use type, as currently audit logs are the only thing which may return it.
This commit is contained in:
committed by
Christopher F
parent
97c893107b
commit
39dffe8585
@@ -268,6 +268,35 @@ namespace Discord.Rest
|
||||
return model.Pruned;
|
||||
}
|
||||
|
||||
// Audit logs
|
||||
public static IAsyncEnumerable<IReadOnlyCollection<RestAuditLogEntry>> GetAuditLogsAsync(IGuild guild, BaseDiscordClient client,
|
||||
ulong? from, int? limit, RequestOptions options)
|
||||
{
|
||||
return new PagedAsyncEnumerable<RestAuditLogEntry>(
|
||||
DiscordConfig.MaxAuditLogEntriesPerBatch,
|
||||
async (info, ct) =>
|
||||
{
|
||||
var args = new GetAuditLogsParams
|
||||
{
|
||||
Limit = info.PageSize
|
||||
};
|
||||
if (info.Position != null)
|
||||
args.BeforeEntryId = info.Position.Value;
|
||||
var model = await client.ApiClient.GetAuditLogsAsync(guild.Id, args, options);
|
||||
return model.Entries.Select((x) => RestAuditLogEntry.Create(client, model, x)).ToImmutableArray();
|
||||
},
|
||||
nextPage: (info, lastPage) =>
|
||||
{
|
||||
if (lastPage.Count != DiscordConfig.MaxAuditLogEntriesPerBatch)
|
||||
return false;
|
||||
info.Position = lastPage.Min(x => x.Id);
|
||||
return true;
|
||||
},
|
||||
start: from,
|
||||
count: limit
|
||||
);
|
||||
}
|
||||
|
||||
//Webhooks
|
||||
public static async Task<RestWebhook> GetWebhookAsync(IGuild guild, BaseDiscordClient client, ulong id, RequestOptions options)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user