feature: update audit log models (#1373)
* Fix bugs * Add missing properties * Add missing properties to ChannelInfo Remove UserLimit property * Add missing properties to GuildInfo Change ContentFilterLevel of type int? to ExplicitContentFilter of type ExplicitContentFilterLevel? * Remove AvatarHash from MemberInfo * Add missing doc comments * Make ExplicitContentFilter public * Add ChannelId property to overwrite audits * Update doc comments based on feedback
This commit is contained in:
@@ -11,11 +11,14 @@ namespace Discord.Rest
|
||||
/// </summary>
|
||||
public class ChannelCreateAuditLogData : IAuditLogData
|
||||
{
|
||||
private ChannelCreateAuditLogData(ulong id, string name, ChannelType type, IReadOnlyCollection<Overwrite> overwrites)
|
||||
private ChannelCreateAuditLogData(ulong id, string name, ChannelType type, int? rateLimit, bool? nsfw, int? bitrate, IReadOnlyCollection<Overwrite> overwrites)
|
||||
{
|
||||
ChannelId = id;
|
||||
ChannelName = name;
|
||||
ChannelType = type;
|
||||
SlowModeInterval = rateLimit;
|
||||
IsNsfw = nsfw;
|
||||
Bitrate = bitrate;
|
||||
Overwrites = overwrites;
|
||||
}
|
||||
|
||||
@@ -27,9 +30,15 @@ namespace Discord.Rest
|
||||
var overwritesModel = changes.FirstOrDefault(x => x.ChangedProperty == "permission_overwrites");
|
||||
var typeModel = changes.FirstOrDefault(x => x.ChangedProperty == "type");
|
||||
var nameModel = changes.FirstOrDefault(x => x.ChangedProperty == "name");
|
||||
var rateLimitPerUserModel = changes.FirstOrDefault(x => x.ChangedProperty == "rate_limit_per_user");
|
||||
var nsfwModel = changes.FirstOrDefault(x => x.ChangedProperty == "nsfw");
|
||||
var bitrateModel = changes.FirstOrDefault(x => x.ChangedProperty == "bitrate");
|
||||
|
||||
var type = typeModel.NewValue.ToObject<ChannelType>(discord.ApiClient.Serializer);
|
||||
var name = nameModel.NewValue.ToObject<string>(discord.ApiClient.Serializer);
|
||||
int? rateLimitPerUser = rateLimitPerUserModel?.NewValue?.ToObject<int>(discord.ApiClient.Serializer);
|
||||
bool? nsfw = nsfwModel?.NewValue?.ToObject<bool>(discord.ApiClient.Serializer);
|
||||
int? bitrate = bitrateModel?.NewValue?.ToObject<int>(discord.ApiClient.Serializer);
|
||||
|
||||
foreach (var overwrite in overwritesModel.NewValue)
|
||||
{
|
||||
@@ -41,7 +50,7 @@ namespace Discord.Rest
|
||||
overwrites.Add(new Overwrite(id, permType, new OverwritePermissions(allow, deny)));
|
||||
}
|
||||
|
||||
return new ChannelCreateAuditLogData(entry.TargetId.Value, name, type, overwrites.ToReadOnlyCollection());
|
||||
return new ChannelCreateAuditLogData(entry.TargetId.Value, name, type, rateLimitPerUser, nsfw, bitrate, overwrites.ToReadOnlyCollection());
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -66,6 +75,32 @@ namespace Discord.Rest
|
||||
/// </returns>
|
||||
public ChannelType ChannelType { get; }
|
||||
/// <summary>
|
||||
/// Gets the current slow-mode delay of the created channel.
|
||||
/// </summary>
|
||||
/// <returns>
|
||||
/// An <see cref="Int32"/> representing the time in seconds required before the user can send another
|
||||
/// message; <c>0</c> if disabled.
|
||||
/// <c>null</c> if this is not mentioned in this entry.
|
||||
/// </returns>
|
||||
public int? SlowModeInterval { get; }
|
||||
/// <summary>
|
||||
/// Gets the value that indicates whether the created channel is NSFW.
|
||||
/// </summary>
|
||||
/// <returns>
|
||||
/// <c>true</c> if the created channel has the NSFW flag enabled; otherwise <c>false</c>.
|
||||
/// <c>null</c> if this is not mentioned in this entry.
|
||||
/// </returns>
|
||||
public bool? IsNsfw { get; }
|
||||
/// <summary>
|
||||
/// Gets the bit-rate that the clients in the created voice channel are requested to use.
|
||||
/// </summary>
|
||||
/// <returns>
|
||||
/// An <see cref="Int32"/> representing the bit-rate (bps) that the created voice channel defines and requests the
|
||||
/// client(s) to use.
|
||||
/// <c>null</c> if this is not mentioned in this entry.
|
||||
/// </returns>
|
||||
public int? Bitrate { get; }
|
||||
/// <summary>
|
||||
/// Gets a collection of permission overwrites that was assigned to the created channel.
|
||||
/// </summary>
|
||||
/// <returns>
|
||||
|
||||
@@ -11,11 +11,14 @@ namespace Discord.Rest
|
||||
/// </summary>
|
||||
public class ChannelDeleteAuditLogData : IAuditLogData
|
||||
{
|
||||
private ChannelDeleteAuditLogData(ulong id, string name, ChannelType type, IReadOnlyCollection<Overwrite> overwrites)
|
||||
private ChannelDeleteAuditLogData(ulong id, string name, ChannelType type, int? rateLimit, bool? nsfw, int? bitrate, IReadOnlyCollection<Overwrite> overwrites)
|
||||
{
|
||||
ChannelId = id;
|
||||
ChannelName = name;
|
||||
ChannelType = type;
|
||||
SlowModeInterval = rateLimit;
|
||||
IsNsfw = nsfw;
|
||||
Bitrate = bitrate;
|
||||
Overwrites = overwrites;
|
||||
}
|
||||
|
||||
@@ -26,15 +29,21 @@ namespace Discord.Rest
|
||||
var overwritesModel = changes.FirstOrDefault(x => x.ChangedProperty == "permission_overwrites");
|
||||
var typeModel = changes.FirstOrDefault(x => x.ChangedProperty == "type");
|
||||
var nameModel = changes.FirstOrDefault(x => x.ChangedProperty == "name");
|
||||
var rateLimitPerUserModel = changes.FirstOrDefault(x => x.ChangedProperty == "rate_limit_per_user");
|
||||
var nsfwModel = changes.FirstOrDefault(x => x.ChangedProperty == "nsfw");
|
||||
var bitrateModel = changes.FirstOrDefault(x => x.ChangedProperty == "bitrate");
|
||||
|
||||
var overwrites = overwritesModel.OldValue.ToObject<API.Overwrite[]>(discord.ApiClient.Serializer)
|
||||
.Select(x => new Overwrite(x.TargetId, x.TargetType, new OverwritePermissions(x.Allow, x.Deny)))
|
||||
.ToList();
|
||||
var type = typeModel.OldValue.ToObject<ChannelType>(discord.ApiClient.Serializer);
|
||||
var name = nameModel.OldValue.ToObject<string>(discord.ApiClient.Serializer);
|
||||
int? rateLimitPerUser = rateLimitPerUserModel?.OldValue?.ToObject<int>(discord.ApiClient.Serializer);
|
||||
bool? nsfw = nsfwModel?.OldValue?.ToObject<bool>(discord.ApiClient.Serializer);
|
||||
int? bitrate = bitrateModel?.OldValue?.ToObject<int>(discord.ApiClient.Serializer);
|
||||
var id = entry.TargetId.Value;
|
||||
|
||||
return new ChannelDeleteAuditLogData(id, name, type, overwrites.ToReadOnlyCollection());
|
||||
return new ChannelDeleteAuditLogData(id, name, type, rateLimitPerUser, nsfw, bitrate, overwrites.ToReadOnlyCollection());
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -59,6 +68,31 @@ namespace Discord.Rest
|
||||
/// </returns>
|
||||
public ChannelType ChannelType { get; }
|
||||
/// <summary>
|
||||
/// Gets the slow-mode delay of the deleted channel.
|
||||
/// </summary>
|
||||
/// <returns>
|
||||
/// An <see cref="Int32"/> representing the time in seconds required before the user can send another
|
||||
/// message; <c>0</c> if disabled.
|
||||
/// <c>null</c> if this is not mentioned in this entry.
|
||||
/// </returns>
|
||||
public int? SlowModeInterval { get; }
|
||||
/// <summary>
|
||||
/// Gets the value that indicates whether the deleted channel was NSFW.
|
||||
/// </summary>
|
||||
/// <returns>
|
||||
/// <c>true</c> if this channel had the NSFW flag enabled; otherwise <c>false</c>.
|
||||
/// <c>null</c> if this is not mentioned in this entry.
|
||||
/// </returns>
|
||||
public bool? IsNsfw { get; }
|
||||
/// <summary>
|
||||
/// Gets the bit-rate of this channel if applicable.
|
||||
/// </summary>
|
||||
/// <returns>
|
||||
/// An <see cref="Int32"/> representing the bit-rate set of the voice channel.
|
||||
/// <c>null</c> if this is not mentioned in this entry.
|
||||
/// </returns>
|
||||
public int? Bitrate { get; }
|
||||
/// <summary>
|
||||
/// Gets a collection of permission overwrites that was assigned to the deleted channel.
|
||||
/// </summary>
|
||||
/// <returns>
|
||||
|
||||
@@ -5,12 +5,13 @@ namespace Discord.Rest
|
||||
/// </summary>
|
||||
public struct ChannelInfo
|
||||
{
|
||||
internal ChannelInfo(string name, string topic, int? bitrate, int? limit)
|
||||
internal ChannelInfo(string name, string topic, int? rateLimit, bool? nsfw, int? bitrate)
|
||||
{
|
||||
Name = name;
|
||||
Topic = topic;
|
||||
SlowModeInterval = rateLimit;
|
||||
IsNsfw = nsfw;
|
||||
Bitrate = bitrate;
|
||||
UserLimit = limit;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -28,20 +29,29 @@ namespace Discord.Rest
|
||||
/// </returns>
|
||||
public string Topic { get; }
|
||||
/// <summary>
|
||||
/// Gets the current slow-mode delay of this channel.
|
||||
/// </summary>
|
||||
/// <returns>
|
||||
/// An <see cref="Int32"/> representing the time in seconds required before the user can send another
|
||||
/// message; <c>0</c> if disabled.
|
||||
/// <c>null</c> if this is not mentioned in this entry.
|
||||
/// </returns>
|
||||
public int? SlowModeInterval { get; }
|
||||
/// <summary>
|
||||
/// Gets the value that indicates whether this channel is NSFW.
|
||||
/// </summary>
|
||||
/// <returns>
|
||||
/// <c>true</c> if this channel has the NSFW flag enabled; otherwise <c>false</c>.
|
||||
/// <c>null</c> if this is not mentioned in this entry.
|
||||
/// </returns>
|
||||
public bool? IsNsfw { get; }
|
||||
/// <summary>
|
||||
/// Gets the bit-rate of this channel if applicable.
|
||||
/// </summary>
|
||||
/// <returns>
|
||||
/// An <see cref="System.Int32"/> representing the bit-rate set for the voice channel; <c>null</c> if not
|
||||
/// applicable.
|
||||
/// An <see cref="Int32"/> representing the bit-rate set for the voice channel;
|
||||
/// <c>null</c> if this is not mentioned in this entry.
|
||||
/// </returns>
|
||||
public int? Bitrate { get; }
|
||||
/// <summary>
|
||||
/// Gets the number of users allowed to be in this channel if applicable.
|
||||
/// </summary>
|
||||
/// <returns>
|
||||
/// An <see cref="System.Int32" /> representing the number of users allowed to be in this voice channel;
|
||||
/// <c>null</c> if not applicable.
|
||||
/// </returns>
|
||||
public int? UserLimit { get; }
|
||||
}
|
||||
}
|
||||
|
||||
@@ -23,20 +23,23 @@ namespace Discord.Rest
|
||||
|
||||
var nameModel = changes.FirstOrDefault(x => x.ChangedProperty == "name");
|
||||
var topicModel = changes.FirstOrDefault(x => x.ChangedProperty == "topic");
|
||||
var rateLimitPerUserModel = changes.FirstOrDefault(x => x.ChangedProperty == "rate_limit_per_user");
|
||||
var nsfwModel = changes.FirstOrDefault(x => x.ChangedProperty == "nsfw");
|
||||
var bitrateModel = changes.FirstOrDefault(x => x.ChangedProperty == "bitrate");
|
||||
var userLimitModel = changes.FirstOrDefault(x => x.ChangedProperty == "user_limit");
|
||||
|
||||
string oldName = nameModel?.OldValue?.ToObject<string>(discord.ApiClient.Serializer),
|
||||
newName = nameModel?.NewValue?.ToObject<string>(discord.ApiClient.Serializer);
|
||||
string oldTopic = topicModel?.OldValue?.ToObject<string>(discord.ApiClient.Serializer),
|
||||
newTopic = topicModel?.NewValue?.ToObject<string>(discord.ApiClient.Serializer);
|
||||
int? oldRateLimitPerUser = rateLimitPerUserModel?.OldValue?.ToObject<int>(discord.ApiClient.Serializer),
|
||||
newRateLimitPerUser = rateLimitPerUserModel?.NewValue?.ToObject<int>(discord.ApiClient.Serializer);
|
||||
bool? oldNsfw = nsfwModel?.OldValue?.ToObject<bool>(discord.ApiClient.Serializer),
|
||||
newNsfw = nsfwModel?.NewValue?.ToObject<bool>(discord.ApiClient.Serializer);
|
||||
int? oldBitrate = bitrateModel?.OldValue?.ToObject<int>(discord.ApiClient.Serializer),
|
||||
newBitrate = bitrateModel?.NewValue?.ToObject<int>(discord.ApiClient.Serializer);
|
||||
int? oldLimit = userLimitModel?.OldValue?.ToObject<int>(discord.ApiClient.Serializer),
|
||||
newLimit = userLimitModel?.NewValue?.ToObject<int>(discord.ApiClient.Serializer);
|
||||
|
||||
var before = new ChannelInfo(oldName, oldTopic, oldBitrate, oldLimit);
|
||||
var after = new ChannelInfo(newName, newTopic, newBitrate, newLimit);
|
||||
var before = new ChannelInfo(oldName, oldTopic, oldRateLimitPerUser, oldNsfw, oldBitrate);
|
||||
var after = new ChannelInfo(newName, newTopic, newRateLimitPerUser, newNsfw, newBitrate);
|
||||
|
||||
return new ChannelUpdateAuditLogData(entry.TargetId.Value, before, after);
|
||||
}
|
||||
|
||||
@@ -7,7 +7,8 @@ namespace Discord.Rest
|
||||
{
|
||||
internal GuildInfo(int? afkTimeout, DefaultMessageNotifications? defaultNotifs,
|
||||
ulong? afkChannel, string name, string region, string icon,
|
||||
VerificationLevel? verification, IUser owner, MfaLevel? mfa, int? filter)
|
||||
VerificationLevel? verification, IUser owner, MfaLevel? mfa, ExplicitContentFilterLevel? filter,
|
||||
ulong? systemChannel, ulong? widgetChannel, bool? widget)
|
||||
{
|
||||
AfkTimeout = afkTimeout;
|
||||
DefaultMessageNotifications = defaultNotifs;
|
||||
@@ -18,7 +19,10 @@ namespace Discord.Rest
|
||||
VerificationLevel = verification;
|
||||
Owner = owner;
|
||||
MfaLevel = mfa;
|
||||
ContentFilterLevel = filter;
|
||||
ExplicitContentFilter = filter;
|
||||
SystemChannelId = systemChannel;
|
||||
EmbedChannelId = widgetChannel;
|
||||
IsEmbeddable = widget;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -28,11 +32,16 @@ namespace Discord.Rest
|
||||
/// <returns>
|
||||
/// An <see cref="int"/> representing the amount of time in seconds for a user to be marked as inactive
|
||||
/// and moved into the AFK voice channel.
|
||||
/// <c>null</c> if this is not mentioned in this entry.
|
||||
/// </returns>
|
||||
public int? AfkTimeout { get; }
|
||||
/// <summary>
|
||||
/// Gets the default message notifications for users who haven't explicitly set their notification settings.
|
||||
/// </summary>
|
||||
/// <returns>
|
||||
/// The default message notifications setting of this guild.
|
||||
/// <c>null</c> if this is not mentioned in this entry.
|
||||
/// </returns>
|
||||
public DefaultMessageNotifications? DefaultMessageNotifications { get; }
|
||||
/// <summary>
|
||||
/// Gets the ID of the AFK voice channel for this guild.
|
||||
@@ -65,6 +74,7 @@ namespace Discord.Rest
|
||||
/// </summary>
|
||||
/// <returns>
|
||||
/// The level of requirements.
|
||||
/// <c>null</c> if this is not mentioned in this entry.
|
||||
/// </returns>
|
||||
public VerificationLevel? VerificationLevel { get; }
|
||||
/// <summary>
|
||||
@@ -80,8 +90,39 @@ namespace Discord.Rest
|
||||
/// </summary>
|
||||
/// <returns>
|
||||
/// The level of MFA requirement.
|
||||
/// <c>null</c> if this is not mentioned in this entry.
|
||||
/// </returns>
|
||||
public MfaLevel? MfaLevel { get; }
|
||||
public int? ContentFilterLevel { get; }
|
||||
/// <summary>
|
||||
/// Gets the level of content filtering applied to user's content in a Guild.
|
||||
/// </summary>
|
||||
/// <returns>
|
||||
/// The level of explicit content filtering.
|
||||
/// </returns>
|
||||
public ExplicitContentFilterLevel? ExplicitContentFilter { get; }
|
||||
/// <summary>
|
||||
/// Gets the ID of the channel where system messages are sent.
|
||||
/// </summary>
|
||||
/// <returns>
|
||||
/// A <see cref="ulong"/> representing the snowflake identifier of the channel where system
|
||||
/// messages are sent; <c>null</c> if none is set.
|
||||
/// </returns>
|
||||
public ulong? SystemChannelId { get; }
|
||||
/// <summary>
|
||||
/// Gets the ID of the widget embed channel of this guild.
|
||||
/// </summary>
|
||||
/// <returns>
|
||||
/// A <see cref="ulong"/> representing the snowflake identifier of the embedded channel found within the
|
||||
/// widget settings of this guild; <c>null</c> if none is set.
|
||||
/// </returns>
|
||||
public ulong? EmbedChannelId { get; }
|
||||
/// <summary>
|
||||
/// Gets a value that indicates whether this guild is embeddable (i.e. can use widget).
|
||||
/// </summary>
|
||||
/// <returns>
|
||||
/// <c>true</c> if this guild can be embedded via widgets; otherwise <c>false</c>.
|
||||
/// <c>null</c> if this is not mentioned in this entry.
|
||||
/// </returns>
|
||||
public bool? IsEmbeddable { get; }
|
||||
}
|
||||
}
|
||||
|
||||
@@ -30,6 +30,9 @@ namespace Discord.Rest
|
||||
var ownerIdModel = changes.FirstOrDefault(x => x.ChangedProperty == "owner_id");
|
||||
var mfaLevelModel = changes.FirstOrDefault(x => x.ChangedProperty == "mfa_level");
|
||||
var contentFilterModel = changes.FirstOrDefault(x => x.ChangedProperty == "explicit_content_filter");
|
||||
var systemChannelIdModel = changes.FirstOrDefault(x => x.ChangedProperty == "system_channel_id");
|
||||
var widgetChannelIdModel = changes.FirstOrDefault(x => x.ChangedProperty == "widget_channel_id");
|
||||
var widgetEnabledModel = changes.FirstOrDefault(x => x.ChangedProperty == "widget_enabled");
|
||||
|
||||
int? oldAfkTimeout = afkTimeoutModel?.OldValue?.ToObject<int>(discord.ApiClient.Serializer),
|
||||
newAfkTimeout = afkTimeoutModel?.NewValue?.ToObject<int>(discord.ApiClient.Serializer);
|
||||
@@ -49,8 +52,14 @@ namespace Discord.Rest
|
||||
newOwnerId = ownerIdModel?.NewValue?.ToObject<ulong>(discord.ApiClient.Serializer);
|
||||
MfaLevel? oldMfaLevel = mfaLevelModel?.OldValue?.ToObject<MfaLevel>(discord.ApiClient.Serializer),
|
||||
newMfaLevel = mfaLevelModel?.NewValue?.ToObject<MfaLevel>(discord.ApiClient.Serializer);
|
||||
int? oldContentFilter = contentFilterModel?.OldValue?.ToObject<int>(discord.ApiClient.Serializer),
|
||||
newContentFilter = contentFilterModel?.NewValue?.ToObject<int>(discord.ApiClient.Serializer);
|
||||
ExplicitContentFilterLevel? oldContentFilter = contentFilterModel?.OldValue?.ToObject<ExplicitContentFilterLevel>(discord.ApiClient.Serializer),
|
||||
newContentFilter = contentFilterModel?.NewValue?.ToObject<ExplicitContentFilterLevel>(discord.ApiClient.Serializer);
|
||||
ulong? oldSystemChannelId = systemChannelIdModel?.OldValue?.ToObject<ulong>(discord.ApiClient.Serializer),
|
||||
newSystemChannelId = systemChannelIdModel?.NewValue?.ToObject<ulong>(discord.ApiClient.Serializer);
|
||||
ulong? oldWidgetChannelId = widgetChannelIdModel?.OldValue?.ToObject<ulong>(discord.ApiClient.Serializer),
|
||||
newWidgetChannelId = widgetChannelIdModel?.NewValue?.ToObject<ulong>(discord.ApiClient.Serializer);
|
||||
bool? oldWidgetEnabled = widgetEnabledModel?.OldValue?.ToObject<bool>(discord.ApiClient.Serializer),
|
||||
newWidgetEnabled = widgetEnabledModel?.NewValue?.ToObject<bool>(discord.ApiClient.Serializer);
|
||||
|
||||
IUser oldOwner = null;
|
||||
if (oldOwnerId != null)
|
||||
@@ -68,10 +77,10 @@ namespace Discord.Rest
|
||||
|
||||
var before = new GuildInfo(oldAfkTimeout, oldDefaultMessageNotifications,
|
||||
oldAfkChannelId, oldName, oldRegionId, oldIconHash, oldVerificationLevel, oldOwner,
|
||||
oldMfaLevel, oldContentFilter);
|
||||
oldMfaLevel, oldContentFilter, oldSystemChannelId, oldWidgetChannelId, oldWidgetEnabled);
|
||||
var after = new GuildInfo(newAfkTimeout, newDefaultMessageNotifications,
|
||||
newAfkChannelId, newName, newRegionId, newIconHash, newVerificationLevel, newOwner,
|
||||
newMfaLevel, newContentFilter);
|
||||
newMfaLevel, newContentFilter, newSystemChannelId, newWidgetChannelId, newWidgetEnabled);
|
||||
|
||||
return new GuildUpdateAuditLogData(before, after);
|
||||
}
|
||||
|
||||
@@ -1,18 +1,41 @@
|
||||
namespace Discord.Rest
|
||||
{
|
||||
/// <summary>
|
||||
/// Represents information for a member.
|
||||
/// </summary>
|
||||
public struct MemberInfo
|
||||
{
|
||||
internal MemberInfo(string nick, bool? deaf, bool? mute, string avatar_hash)
|
||||
internal MemberInfo(string nick, bool? deaf, bool? mute)
|
||||
{
|
||||
Nickname = nick;
|
||||
Deaf = deaf;
|
||||
Mute = mute;
|
||||
AvatarHash = avatar_hash;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Gets the nickname of the updated member.
|
||||
/// </summary>
|
||||
/// <returns>
|
||||
/// A string representing the nickname of the updated member; <c>null</c> if none is set.
|
||||
/// </returns>
|
||||
public string Nickname { get; }
|
||||
/// <summary>
|
||||
/// Gets a value that indicates whether the updated member is deafened by the guild.
|
||||
/// </summary>
|
||||
/// <returns>
|
||||
/// <c>true</c> if the updated member is deafened (i.e. not permitted to listen to or speak to others) by the guild;
|
||||
/// otherwise <c>false</c>.
|
||||
/// <c>null</c> if this is not mentioned in this entry.
|
||||
/// </returns>
|
||||
public bool? Deaf { get; }
|
||||
/// <summary>
|
||||
/// Gets a value that indicates whether the updated member is muted (i.e. not permitted to speak via voice) by the
|
||||
/// guild.
|
||||
/// </summary>
|
||||
/// <returns>
|
||||
/// <c>true</c> if the updated member is muted by the guild; otherwise <c>false</c>.
|
||||
/// <c>null</c> if this is not mentioned in this entry.
|
||||
/// </returns>
|
||||
public bool? Mute { get; }
|
||||
public string AvatarHash { get; }
|
||||
}
|
||||
}
|
||||
|
||||
@@ -24,7 +24,6 @@ namespace Discord.Rest
|
||||
var nickModel = changes.FirstOrDefault(x => x.ChangedProperty == "nick");
|
||||
var deafModel = changes.FirstOrDefault(x => x.ChangedProperty == "deaf");
|
||||
var muteModel = changes.FirstOrDefault(x => x.ChangedProperty == "mute");
|
||||
var avatarModel = changes.FirstOrDefault(x => x.ChangedProperty == "avatar_hash");
|
||||
|
||||
string oldNick = nickModel?.OldValue?.ToObject<string>(discord.ApiClient.Serializer),
|
||||
newNick = nickModel?.NewValue?.ToObject<string>(discord.ApiClient.Serializer);
|
||||
@@ -32,14 +31,12 @@ namespace Discord.Rest
|
||||
newDeaf = deafModel?.NewValue?.ToObject<bool>(discord.ApiClient.Serializer);
|
||||
bool? oldMute = muteModel?.OldValue?.ToObject<bool>(discord.ApiClient.Serializer),
|
||||
newMute = muteModel?.NewValue?.ToObject<bool>(discord.ApiClient.Serializer);
|
||||
string oldAvatar = avatarModel?.OldValue?.ToObject<string>(discord.ApiClient.Serializer),
|
||||
newAvatar = avatarModel?.NewValue?.ToObject<string>(discord.ApiClient.Serializer);
|
||||
|
||||
var targetInfo = log.Users.FirstOrDefault(x => x.Id == entry.TargetId);
|
||||
var user = RestUser.Create(discord, targetInfo);
|
||||
|
||||
var before = new MemberInfo(oldNick, oldDeaf, oldMute, oldAvatar);
|
||||
var after = new MemberInfo(newNick, newDeaf, newMute, newAvatar);
|
||||
var before = new MemberInfo(oldNick, oldDeaf, oldMute);
|
||||
var after = new MemberInfo(newNick, newDeaf, newMute);
|
||||
|
||||
return new MemberUpdateAuditLogData(user, before, after);
|
||||
}
|
||||
@@ -51,7 +48,19 @@ namespace Discord.Rest
|
||||
/// A user object representing the user who the changes were performed on.
|
||||
/// </returns>
|
||||
public IUser Target { get; }
|
||||
/// <summary>
|
||||
/// Gets the member information before the changes.
|
||||
/// </summary>
|
||||
/// <returns>
|
||||
/// An information object containing the original member information before the changes were made.
|
||||
/// </returns>
|
||||
public MemberInfo Before { get; }
|
||||
/// <summary>
|
||||
/// Gets the member information after the changes.
|
||||
/// </summary>
|
||||
/// <returns>
|
||||
/// An information object containing the member information after the changes were made.
|
||||
/// </returns>
|
||||
public MemberInfo After { get; }
|
||||
}
|
||||
}
|
||||
|
||||
@@ -10,8 +10,9 @@ namespace Discord.Rest
|
||||
/// </summary>
|
||||
public class OverwriteCreateAuditLogData : IAuditLogData
|
||||
{
|
||||
private OverwriteCreateAuditLogData(Overwrite overwrite)
|
||||
private OverwriteCreateAuditLogData(ulong channelId, Overwrite overwrite)
|
||||
{
|
||||
ChannelId = channelId;
|
||||
Overwrite = overwrite;
|
||||
}
|
||||
|
||||
@@ -30,9 +31,17 @@ namespace Discord.Rest
|
||||
var id = entry.Options.OverwriteTargetId.Value;
|
||||
var type = entry.Options.OverwriteType;
|
||||
|
||||
return new OverwriteCreateAuditLogData(new Overwrite(id, type, permissions));
|
||||
return new OverwriteCreateAuditLogData(entry.TargetId.Value, new Overwrite(id, type, permissions));
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Gets the ID of the channel that the overwrite was created from.
|
||||
/// </summary>
|
||||
/// <returns>
|
||||
/// A <see cref="ulong"/> representing the snowflake identifier for the channel that the overwrite was
|
||||
/// created from.
|
||||
/// </returns>
|
||||
public ulong ChannelId { get; }
|
||||
/// <summary>
|
||||
/// Gets the permission overwrite object that was created.
|
||||
/// </summary>
|
||||
|
||||
@@ -10,8 +10,9 @@ namespace Discord.Rest
|
||||
/// </summary>
|
||||
public class OverwriteDeleteAuditLogData : IAuditLogData
|
||||
{
|
||||
private OverwriteDeleteAuditLogData(Overwrite deletedOverwrite)
|
||||
private OverwriteDeleteAuditLogData(ulong channelId, Overwrite deletedOverwrite)
|
||||
{
|
||||
ChannelId = channelId;
|
||||
Overwrite = deletedOverwrite;
|
||||
}
|
||||
|
||||
@@ -29,9 +30,17 @@ namespace Discord.Rest
|
||||
var id = idModel.OldValue.ToObject<ulong>(discord.ApiClient.Serializer);
|
||||
var allow = allowModel.OldValue.ToObject<ulong>(discord.ApiClient.Serializer);
|
||||
|
||||
return new OverwriteDeleteAuditLogData(new Overwrite(id, type, new OverwritePermissions(allow, deny)));
|
||||
return new OverwriteDeleteAuditLogData(entry.TargetId.Value, new Overwrite(id, type, new OverwritePermissions(allow, deny)));
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Gets the ID of the channel that the overwrite was deleted from.
|
||||
/// </summary>
|
||||
/// <returns>
|
||||
/// A <see cref="ulong"/> representing the snowflake identifier for the channel that the overwrite was
|
||||
/// deleted from.
|
||||
/// </returns>
|
||||
public ulong ChannelId { get; }
|
||||
/// <summary>
|
||||
/// Gets the permission overwrite object that was deleted.
|
||||
/// </summary>
|
||||
|
||||
@@ -10,8 +10,9 @@ namespace Discord.Rest
|
||||
/// </summary>
|
||||
public class OverwriteUpdateAuditLogData : IAuditLogData
|
||||
{
|
||||
private OverwriteUpdateAuditLogData(OverwritePermissions before, OverwritePermissions after, ulong targetId, PermissionTarget targetType)
|
||||
private OverwriteUpdateAuditLogData(ulong channelId, OverwritePermissions before, OverwritePermissions after, ulong targetId, PermissionTarget targetType)
|
||||
{
|
||||
ChannelId = channelId;
|
||||
OldPermissions = before;
|
||||
NewPermissions = after;
|
||||
OverwriteTargetId = targetId;
|
||||
@@ -28,16 +29,24 @@ namespace Discord.Rest
|
||||
var beforeAllow = allowModel?.OldValue?.ToObject<ulong>(discord.ApiClient.Serializer);
|
||||
var afterAllow = allowModel?.NewValue?.ToObject<ulong>(discord.ApiClient.Serializer);
|
||||
var beforeDeny = denyModel?.OldValue?.ToObject<ulong>(discord.ApiClient.Serializer);
|
||||
var afterDeny = denyModel?.OldValue?.ToObject<ulong>(discord.ApiClient.Serializer);
|
||||
var afterDeny = denyModel?.NewValue?.ToObject<ulong>(discord.ApiClient.Serializer);
|
||||
|
||||
var beforePermissions = new OverwritePermissions(beforeAllow ?? 0, beforeDeny ?? 0);
|
||||
var afterPermissions = new OverwritePermissions(afterAllow ?? 0, afterDeny ?? 0);
|
||||
|
||||
var type = entry.Options.OverwriteType;
|
||||
|
||||
return new OverwriteUpdateAuditLogData(beforePermissions, afterPermissions, entry.Options.OverwriteTargetId.Value, type);
|
||||
return new OverwriteUpdateAuditLogData(entry.TargetId.Value, beforePermissions, afterPermissions, entry.Options.OverwriteTargetId.Value, type);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Gets the ID of the channel that the overwrite was updated from.
|
||||
/// </summary>
|
||||
/// <returns>
|
||||
/// A <see cref="ulong"/> representing the snowflake identifier for the channel that the overwrite was
|
||||
/// updated from.
|
||||
/// </returns>
|
||||
public ulong ChannelId { get; }
|
||||
/// <summary>
|
||||
/// Gets the overwrite permissions before the changes.
|
||||
/// </summary>
|
||||
|
||||
@@ -36,7 +36,7 @@ namespace Discord.Rest
|
||||
string oldName = nameModel?.OldValue?.ToObject<string>(discord.ApiClient.Serializer),
|
||||
newName = nameModel?.NewValue?.ToObject<string>(discord.ApiClient.Serializer);
|
||||
ulong? oldPermissionsRaw = permissionsModel?.OldValue?.ToObject<ulong>(discord.ApiClient.Serializer),
|
||||
newPermissionsRaw = permissionsModel?.OldValue?.ToObject<ulong>(discord.ApiClient.Serializer);
|
||||
newPermissionsRaw = permissionsModel?.NewValue?.ToObject<ulong>(discord.ApiClient.Serializer);
|
||||
|
||||
Color? oldColor = null,
|
||||
newColor = null;
|
||||
|
||||
Reference in New Issue
Block a user