* add event to socket client * make `AuditLog` param optional * Some WIP audit log changes * api models * moar models * complete models * modelsss * forgot to push * oh lol forgot this too * api & rest guild method * revert VS being VS & formatting to file scoped namespace * socket entities * some work eh * moar stuff - switched to d.net's attribute for audit log deserialization * working socket guild updated event + reworked rest GuildInfo creation * a bit of refactoring + new models * +channel created * channel updated & channel deleted * refactor rest channel updated log + some nullable fixes * rest channel created + deleted logs * user banned socket log * kick + unban * moar log modelsssss * fixes & 4 more log types * overwrite logs * role logs * invite logs * webhook logs * switch to `ISocketAuditLogData` for socket log data * emote logs * move stuff around * move more stuff around * audit logs cache * scheduled event logs * thread logs * command permission update audit log * fetch scheduled event data from log * integration audit logs * sticker audit log data * stage instance audit logs * auto mod rule audit logs * fix * forgot couple props * command perm updated data from options * final automod ones * debugging goes away :( * merge cringe * ... * yup * fix xml doc * onboarding audit logs * changes --------- Co-authored-by: cat <lumitydev@gmail.com>
44 lines
1.4 KiB
C#
44 lines
1.4 KiB
C#
using System;
|
|
using System.Linq;
|
|
using EntryModel = Discord.API.AuditLogEntry;
|
|
using Model = Discord.API.AuditLog;
|
|
|
|
namespace Discord.Rest
|
|
{
|
|
/// <summary>
|
|
/// Represents a REST-based audit log entry.
|
|
/// </summary>
|
|
public class RestAuditLogEntry : RestEntity<ulong>, IAuditLogEntry
|
|
{
|
|
private RestAuditLogEntry(BaseDiscordClient discord, Model fullLog, EntryModel model, IUser user)
|
|
: base(discord, model.Id)
|
|
{
|
|
Action = model.Action;
|
|
Data = AuditLogHelper.CreateData(discord, model, fullLog);
|
|
User = user;
|
|
Reason = model.Reason;
|
|
}
|
|
|
|
internal static RestAuditLogEntry Create(BaseDiscordClient discord, Model fullLog, EntryModel model)
|
|
{
|
|
var userInfo = model.UserId != null ? fullLog.Users.FirstOrDefault(x => x.Id == model.UserId) : null;
|
|
IUser user = null;
|
|
if (userInfo != null)
|
|
user = RestUser.Create(discord, userInfo);
|
|
|
|
return new RestAuditLogEntry(discord, fullLog, model, user);
|
|
}
|
|
|
|
/// <inheritdoc/>
|
|
public DateTimeOffset CreatedAt => SnowflakeUtils.FromSnowflake(Id);
|
|
/// <inheritdoc/>
|
|
public ActionType Action { get; }
|
|
/// <inheritdoc/>
|
|
public IAuditLogData Data { get; }
|
|
/// <inheritdoc/>
|
|
public IUser User { get; }
|
|
/// <inheritdoc/>
|
|
public string Reason { get; }
|
|
}
|
|
}
|