@@ -1,79 +1,58 @@ | |||||
using Model = Discord.API.AuditLog; | |||||
using System; | |||||
using System.Collections.Generic; | |||||
using Model = Discord.API.AuditLog; | |||||
using EntryModel = Discord.API.AuditLogEntry; | using EntryModel = Discord.API.AuditLogEntry; | ||||
namespace Discord.Rest | namespace Discord.Rest | ||||
{ | { | ||||
internal static class AuditLogHelper | internal static class AuditLogHelper | ||||
{ | { | ||||
public static IAuditLogData CreateData(BaseDiscordClient discord, Model log, EntryModel entry) | |||||
private static readonly Dictionary<ActionType, Func<BaseDiscordClient, Model, EntryModel, IAuditLogData>> CreateMapping | |||||
= new Dictionary<ActionType, Func<BaseDiscordClient, Model, EntryModel, IAuditLogData>>() | |||||
{ | { | ||||
switch (entry.Action) | |||||
{ | |||||
case ActionType.GuildUpdated: //1 | |||||
return GuildUpdateAuditLogData.Create(discord, log, entry); | |||||
[ActionType.GuildUpdated] = GuildUpdateAuditLogData.Create, | |||||
[ActionType.ChannelCreated] = ChannelCreateAuditLogData.Create, | |||||
[ActionType.ChannelUpdated] = ChannelUpdateAuditLogData.Create, | |||||
[ActionType.ChannelDeleted] = ChannelDeleteAuditLogData.Create, | |||||
case ActionType.ChannelCreated: //10 | |||||
return ChannelCreateAuditLogData.Create(discord, log, entry); | |||||
case ActionType.ChannelUpdated: | |||||
return ChannelUpdateAuditLogData.Create(discord, log, entry); | |||||
case ActionType.ChannelDeleted: | |||||
return ChannelDeleteAuditLogData.Create(discord, log, entry); | |||||
case ActionType.OverwriteCreated: | |||||
return OverwriteCreateAuditLogData.Create(discord, log, entry); | |||||
case ActionType.OverwriteUpdated: | |||||
return OverwriteUpdateAuditLogData.Create(discord, log, entry); | |||||
case ActionType.OverwriteDeleted: | |||||
return OverwriteDeleteAuditLogData.Create(discord, log, entry); | |||||
[ActionType.OverwriteCreated] = OverwriteCreateAuditLogData.Create, | |||||
[ActionType.OverwriteUpdated] = OverwriteUpdateAuditLogData.Create, | |||||
[ActionType.OverwriteDeleted] = OverwriteDeleteAuditLogData.Create, | |||||
case ActionType.Kick: //20 | |||||
return KickAuditLogData.Create(discord, log, entry); | |||||
case ActionType.Prune: | |||||
return PruneAuditLogData.Create(discord, log, entry); | |||||
case ActionType.Ban: | |||||
return BanAuditLogData.Create(discord, log, entry); | |||||
case ActionType.Unban: | |||||
return UnbanAuditLogData.Create(discord, log, entry); | |||||
case ActionType.MemberUpdated: | |||||
return MemberUpdateAuditLogData.Create(discord, log, entry); | |||||
case ActionType.MemberRoleUpdated: | |||||
return MemberRoleAuditLogData.Create(discord, log, entry); | |||||
[ActionType.Kick] = KickAuditLogData.Create, | |||||
[ActionType.Prune] = PruneAuditLogData.Create, | |||||
[ActionType.Ban] = BanAuditLogData.Create, | |||||
[ActionType.Unban] = UnbanAuditLogData.Create, | |||||
[ActionType.MemberUpdated] = MemberUpdateAuditLogData.Create, | |||||
[ActionType.MemberRoleUpdated] = MemberRoleAuditLogData.Create, | |||||
case ActionType.RoleCreated: //30 | |||||
return RoleCreateAuditLogData.Create(discord, log, entry); | |||||
case ActionType.RoleUpdated: | |||||
return RoleUpdateAuditLogData.Create(discord, log, entry); | |||||
case ActionType.RoleDeleted: | |||||
return RoleDeleteAuditLogData.Create(discord, log, entry); | |||||
[ActionType.RoleCreated] = RoleCreateAuditLogData.Create, | |||||
[ActionType.RoleUpdated] = RoleUpdateAuditLogData.Create, | |||||
[ActionType.RoleDeleted] = RoleDeleteAuditLogData.Create, | |||||
case ActionType.InviteCreated: //40 | |||||
return InviteCreateAuditLogData.Create(discord, log, entry); | |||||
case ActionType.InviteUpdated: | |||||
break; | |||||
case ActionType.InviteDeleted: | |||||
return InviteDeleteAuditLogData.Create(discord, log, entry); | |||||
[ActionType.InviteCreated] = InviteCreateAuditLogData.Create, | |||||
[ActionType.InviteUpdated] = InviteUpdateAuditLogData.Create, | |||||
[ActionType.InviteDeleted] = InviteDeleteAuditLogData.Create, | |||||
case ActionType.WebhookCreated: //50 | |||||
return WebhookCreateAuditLogData.Create(discord, log, entry); | |||||
case ActionType.WebhookUpdated: | |||||
return WebhookUpdateAuditLogData.Create(discord, log, entry); | |||||
case ActionType.WebhookDeleted: | |||||
return WebhookDeleteAuditLogData.Create(discord, log, entry); | |||||
[ActionType.WebhookCreated] = WebhookCreateAuditLogData.Create, | |||||
[ActionType.WebhookUpdated] = WebhookUpdateAuditLogData.Create, | |||||
[ActionType.WebhookDeleted] = WebhookDeleteAuditLogData.Create, | |||||
case ActionType.EmojiCreated: //60 | |||||
return EmoteCreateAuditLogData.Create(discord, log, entry); | |||||
case ActionType.EmojiUpdated: | |||||
return EmoteUpdateAuditLogData.Create(discord, log, entry); | |||||
case ActionType.EmojiDeleted: | |||||
return EmoteDeleteAuditLogData.Create(discord, log, entry); | |||||
[ActionType.EmojiCreated] = EmoteCreateAuditLogData.Create, | |||||
[ActionType.EmojiUpdated] = EmoteUpdateAuditLogData.Create, | |||||
[ActionType.EmojiDeleted] = EmoteDeleteAuditLogData.Create, | |||||
case ActionType.MessageDeleted: //72 | |||||
return MessageDeleteAuditLogData.Create(discord, log, entry); | |||||
[ActionType.MessageDeleted] = MessageDeleteAuditLogData.Create, | |||||
}; | |||||
public static IAuditLogData CreateData(BaseDiscordClient discord, Model log, EntryModel entry) | |||||
{ | |||||
if (CreateMapping.TryGetValue(entry.Action, out var func)) | |||||
return func(discord, log, entry); | |||||
default: //Unknown | |||||
return null; | |||||
} | |||||
return null; | return null; | ||||
//throw new NotImplementedException($"{nameof(AuditLogHelper)} does not implement the {entry.Action} audit log event."); | |||||
} | } | ||||
} | } | ||||
} | } |
@@ -17,73 +17,37 @@ namespace Discord.Rest | |||||
{ | { | ||||
var changes = entry.Changes; | var changes = entry.Changes; | ||||
int? oldAfkTimeout = null, | |||||
newAfkTimeout = null; | |||||
DefaultMessageNotifications? oldDefaultMessageNotifications = null, | |||||
newDefaultMessageNotifications = null; | |||||
ulong? oldAfkChannelId = null, | |||||
newAfkChannelId = null; | |||||
string oldName = null, | |||||
newName = null; | |||||
string oldRegionId = null, | |||||
newRegionId = null; | |||||
string oldIconHash = null, | |||||
newIconHash = null; | |||||
VerificationLevel? oldVerificationLevel = null, | |||||
newVerificationLevel = null; | |||||
ulong? oldOwnerId = null, | |||||
newOwnerId = null; | |||||
MfaLevel? oldMfaLevel = null, | |||||
newMfaLevel = null; | |||||
int? oldContentFilter = null, | |||||
newContentFilter = null; | |||||
var afkTimeoutModel = changes.FirstOrDefault(x => x.ChangedProperty == "afk_timeout"); | |||||
var defaultMessageNotificationsModel = changes.FirstOrDefault(x => x.ChangedProperty == "afk_timeout"); | |||||
var afkChannelModel = changes.FirstOrDefault(x => x.ChangedProperty == "afk_timeout"); | |||||
var nameModel = changes.FirstOrDefault(x => x.ChangedProperty == "afk_timeout"); | |||||
var regionIdModel = changes.FirstOrDefault(x => x.ChangedProperty == "afk_timeout"); | |||||
var iconHashModel = changes.FirstOrDefault(x => x.ChangedProperty == "afk_timeout"); | |||||
var verificationLevelModel = changes.FirstOrDefault(x => x.ChangedProperty == "afk_timeout"); | |||||
var ownerIdModel = changes.FirstOrDefault(x => x.ChangedProperty == "afk_timeout"); | |||||
var mfaLevelModel = changes.FirstOrDefault(x => x.ChangedProperty == "afk_timeout"); | |||||
var contentFilterModel = changes.FirstOrDefault(x => x.ChangedProperty == "afk_timeout"); | |||||
foreach (var change in changes) | |||||
{ | |||||
switch (change.ChangedProperty) | |||||
{ | |||||
case "afk_timeout": | |||||
oldAfkTimeout = change.OldValue?.ToObject<int>(); | |||||
newAfkTimeout = change.NewValue?.ToObject<int>(); | |||||
break; | |||||
case "default_message_notifications": | |||||
oldDefaultMessageNotifications = change.OldValue?.ToObject<DefaultMessageNotifications>(); | |||||
newDefaultMessageNotifications = change.OldValue?.ToObject<DefaultMessageNotifications>(); | |||||
break; | |||||
case "afk_channel_id": | |||||
oldAfkChannelId = change.OldValue?.ToObject<ulong>(); | |||||
newAfkChannelId = change.NewValue?.ToObject<ulong>(); | |||||
break; | |||||
case "name": | |||||
oldName = change.OldValue?.ToObject<string>(); | |||||
newName = change.NewValue?.ToObject<string>(); | |||||
break; | |||||
case "region": | |||||
oldRegionId = change.OldValue?.ToObject<string>(); | |||||
newRegionId = change.NewValue?.ToObject<string>(); | |||||
break; | |||||
case "icon_hash": | |||||
oldIconHash = change.OldValue?.ToObject<string>(); | |||||
newIconHash = change.NewValue?.ToObject<string>(); | |||||
break; | |||||
case "verification_level": | |||||
oldVerificationLevel = change.OldValue?.ToObject<VerificationLevel>(); | |||||
newVerificationLevel = change.NewValue?.ToObject<VerificationLevel>(); | |||||
break; | |||||
case "owner": | |||||
oldOwnerId = change.OldValue?.ToObject<ulong>(); | |||||
newOwnerId = change.NewValue?.ToObject<ulong>(); | |||||
break; | |||||
case "mfa_level": | |||||
oldMfaLevel = change.OldValue?.ToObject<MfaLevel>(); | |||||
newMfaLevel = change.OldValue?.ToObject<MfaLevel>(); | |||||
break; | |||||
case "explicit_content_filter": | |||||
oldContentFilter = change.OldValue?.ToObject<int>(); | |||||
newContentFilter = change.NewValue?.ToObject<int>(); | |||||
break; | |||||
} | |||||
} | |||||
int? oldAfkTimeout = afkTimeoutModel?.OldValue?.ToObject<int>(), | |||||
newAfkTimeout = afkTimeoutModel?.NewValue?.ToObject<int>(); | |||||
DefaultMessageNotifications? oldDefaultMessageNotifications = defaultMessageNotificationsModel?.OldValue?.ToObject<DefaultMessageNotifications>(), | |||||
newDefaultMessageNotifications = defaultMessageNotificationsModel?.NewValue?.ToObject<DefaultMessageNotifications>(); | |||||
ulong? oldAfkChannelId = afkChannelModel?.OldValue?.ToObject<ulong>(), | |||||
newAfkChannelId = afkChannelModel?.NewValue?.ToObject<ulong>(); | |||||
string oldName = nameModel?.OldValue?.ToObject<string>(), | |||||
newName = nameModel?.NewValue?.ToObject<string>(); | |||||
string oldRegionId = regionIdModel?.OldValue?.ToObject<string>(), | |||||
newRegionId = regionIdModel?.NewValue?.ToObject<string>(); | |||||
string oldIconHash = iconHashModel?.OldValue?.ToObject<string>(), | |||||
newIconHash = iconHashModel?.NewValue?.ToObject<string>(); | |||||
VerificationLevel? oldVerificationLevel = verificationLevelModel?.OldValue?.ToObject<VerificationLevel>(), | |||||
newVerificationLevel = verificationLevelModel?.NewValue?.ToObject<VerificationLevel>(); | |||||
ulong? oldOwnerId = ownerIdModel?.OldValue?.ToObject<ulong>(), | |||||
newOwnerId = ownerIdModel?.NewValue?.ToObject<ulong>(); | |||||
MfaLevel? oldMfaLevel = mfaLevelModel?.OldValue?.ToObject<MfaLevel>(), | |||||
newMfaLevel = mfaLevelModel?.NewValue?.ToObject<MfaLevel>(); | |||||
int? oldContentFilter = contentFilterModel?.OldValue?.ToObject<int>(), | |||||
newContentFilter = contentFilterModel?.NewValue?.ToObject<int>(); | |||||
IUser oldOwner = null; | IUser oldOwner = null; | ||||
if (oldOwnerId != null) | if (oldOwnerId != null) | ||||
@@ -0,0 +1,20 @@ | |||||
namespace Discord.Rest | |||||
{ | |||||
public struct InviteInfo | |||||
{ | |||||
internal InviteInfo(int? maxAge, string code, bool? temporary, ulong? channelId, int? maxUses) | |||||
{ | |||||
MaxAge = maxAge; | |||||
Code = code; | |||||
Temporary = temporary; | |||||
ChannelId = channelId; | |||||
MaxUses = maxUses; | |||||
} | |||||
public int? MaxAge { get; } | |||||
public string Code { get; } | |||||
public bool? Temporary { get; } | |||||
public ulong? ChannelId { get; } | |||||
public int? MaxUses { get; } | |||||
} | |||||
} |
@@ -0,0 +1,46 @@ | |||||
using System.Linq; | |||||
using Model = Discord.API.AuditLog; | |||||
using EntryModel = Discord.API.AuditLogEntry; | |||||
namespace Discord.Rest | |||||
{ | |||||
public class InviteUpdateAuditLogData : IAuditLogData | |||||
{ | |||||
private InviteUpdateAuditLogData(InviteInfo before, InviteInfo after) | |||||
{ | |||||
Before = before; | |||||
After = after; | |||||
} | |||||
internal static InviteUpdateAuditLogData Create(BaseDiscordClient discord, Model log, EntryModel entry) | |||||
{ | |||||
var changes = entry.Changes; | |||||
var maxAgeModel = changes.FirstOrDefault(x => x.ChangedProperty == "max_age"); | |||||
var codeModel = changes.FirstOrDefault(x => x.ChangedProperty == "code"); | |||||
var temporaryModel = changes.FirstOrDefault(x => x.ChangedProperty == "temporary"); | |||||
var channelIdModel = changes.FirstOrDefault(x => x.ChangedProperty == "channel_id"); | |||||
var maxUsesModel = changes.FirstOrDefault(x => x.ChangedProperty == "max_uses"); | |||||
int? oldMaxAge = maxAgeModel?.OldValue?.ToObject<int>(), | |||||
newMaxAge = maxAgeModel?.NewValue?.ToObject<int>(); | |||||
string oldCode = codeModel?.OldValue?.ToObject<string>(), | |||||
newCode = codeModel?.NewValue?.ToObject<string>(); | |||||
bool? oldTemporary = temporaryModel?.OldValue?.ToObject<bool>(), | |||||
newTemporary = temporaryModel?.NewValue?.ToObject<bool>(); | |||||
ulong? oldChannelId = channelIdModel?.OldValue?.ToObject<ulong>(), | |||||
newChannelId = channelIdModel?.NewValue?.ToObject<ulong>(); | |||||
int? oldMaxUses = maxUsesModel?.OldValue?.ToObject<int>(), | |||||
newMaxUses = maxUsesModel?.NewValue?.ToObject<int>(); | |||||
var before = new InviteInfo(oldMaxAge, oldCode, oldTemporary, oldChannelId, oldMaxUses); | |||||
var after = new InviteInfo(newMaxAge, newCode, newTemporary, newChannelId, newMaxUses); | |||||
return new InviteUpdateAuditLogData(before, after); | |||||
} | |||||
public InviteInfo Before { get; } | |||||
public InviteInfo After { get; } | |||||
} | |||||
} |
@@ -1,4 +1,6 @@ | |||||
using Model = Discord.API.AuditLog; | |||||
using System.Linq; | |||||
using Model = Discord.API.AuditLog; | |||||
using EntryModel = Discord.API.AuditLogEntry; | using EntryModel = Discord.API.AuditLogEntry; | ||||
namespace Discord.Rest | namespace Discord.Rest | ||||
@@ -15,38 +17,25 @@ namespace Discord.Rest | |||||
{ | { | ||||
var changes = entry.Changes; | var changes = entry.Changes; | ||||
var colorModel = changes.FirstOrDefault(x => x.ChangedProperty == "color"); | |||||
var mentionableModel = changes.FirstOrDefault(x => x.ChangedProperty == "mentionable"); | |||||
var hoistModel = changes.FirstOrDefault(x => x.ChangedProperty == "hoist"); | |||||
var nameModel = changes.FirstOrDefault(x => x.ChangedProperty == "name"); | |||||
var permissionsModel = changes.FirstOrDefault(x => x.ChangedProperty == "permissions"); | |||||
uint? colorRaw = colorModel?.NewValue?.ToObject<uint>(); | |||||
bool? mentionable = mentionableModel?.NewValue?.ToObject<bool>(); | |||||
bool? hoist = hoistModel?.NewValue?.ToObject<bool>(); | |||||
string name = nameModel?.NewValue?.ToObject<string>(); | |||||
ulong? permissionsRaw = permissionsModel?.NewValue?.ToObject<ulong>(); | |||||
Color? color = null; | Color? color = null; | ||||
bool? mentionable = null, | |||||
hoist = null; | |||||
string name = null; | |||||
GuildPermissions? permissions = null; | GuildPermissions? permissions = null; | ||||
foreach (var model in changes) | |||||
{ | |||||
switch (model.ChangedProperty) | |||||
{ | |||||
case "color": | |||||
if (model.NewValue != null) | |||||
color = new Color(model.NewValue.ToObject<uint>()); | |||||
break; | |||||
case "mentionable": | |||||
if (model.NewValue != null) | |||||
mentionable = model.NewValue.ToObject<bool>(); | |||||
break; | |||||
case "hoist": | |||||
if (model.NewValue != null) | |||||
hoist = model.NewValue.ToObject<bool>(); | |||||
break; | |||||
case "name": | |||||
if (model.NewValue != null) | |||||
name = model.NewValue.ToObject<string>(); | |||||
break; | |||||
case "permissions": | |||||
if (model.NewValue != null) | |||||
permissions = new GuildPermissions(model.NewValue.ToObject<ulong>()); | |||||
break; | |||||
} | |||||
} | |||||
if (colorRaw.HasValue) | |||||
color = new Color(colorRaw.Value); | |||||
if (permissionsRaw.HasValue) | |||||
permissions = new GuildPermissions(permissionsRaw.Value); | |||||
return new RoleCreateAuditLogData(entry.TargetId.Value, | return new RoleCreateAuditLogData(entry.TargetId.Value, | ||||
new RoleInfo(color, mentionable, hoist, name, permissions)); | new RoleInfo(color, mentionable, hoist, name, permissions)); | ||||
@@ -1,4 +1,6 @@ | |||||
using Model = Discord.API.AuditLog; | |||||
using System.Linq; | |||||
using Model = Discord.API.AuditLog; | |||||
using EntryModel = Discord.API.AuditLogEntry; | using EntryModel = Discord.API.AuditLogEntry; | ||||
namespace Discord.Rest | namespace Discord.Rest | ||||
@@ -15,38 +17,25 @@ namespace Discord.Rest | |||||
{ | { | ||||
var changes = entry.Changes; | var changes = entry.Changes; | ||||
var colorModel = changes.FirstOrDefault(x => x.ChangedProperty == "color"); | |||||
var mentionableModel = changes.FirstOrDefault(x => x.ChangedProperty == "mentionable"); | |||||
var hoistModel = changes.FirstOrDefault(x => x.ChangedProperty == "hoist"); | |||||
var nameModel = changes.FirstOrDefault(x => x.ChangedProperty == "name"); | |||||
var permissionsModel = changes.FirstOrDefault(x => x.ChangedProperty == "permissions"); | |||||
uint? colorRaw = colorModel?.OldValue?.ToObject<uint>(); | |||||
bool? mentionable = mentionableModel?.OldValue?.ToObject<bool>(); | |||||
bool? hoist = hoistModel?.OldValue?.ToObject<bool>(); | |||||
string name = nameModel?.OldValue?.ToObject<string>(); | |||||
ulong? permissionsRaw = permissionsModel?.OldValue?.ToObject<ulong>(); | |||||
Color? color = null; | Color? color = null; | ||||
bool? mentionable = null, | |||||
hoist = null; | |||||
string name = null; | |||||
GuildPermissions? permissions = null; | GuildPermissions? permissions = null; | ||||
foreach (var model in changes) | |||||
{ | |||||
switch (model.ChangedProperty) | |||||
{ | |||||
case "color": | |||||
if (model.OldValue != null) | |||||
color = new Color(model.OldValue.ToObject<uint>()); | |||||
break; | |||||
case "mentionable": | |||||
if (model.OldValue != null) | |||||
mentionable = model.OldValue.ToObject<bool>(); | |||||
break; | |||||
case "hoist": | |||||
if (model.OldValue != null) | |||||
hoist = model.OldValue.ToObject<bool>(); | |||||
break; | |||||
case "name": | |||||
if (model.OldValue != null) | |||||
name = model.OldValue.ToObject<string>(); | |||||
break; | |||||
case "permissions": | |||||
if (model.OldValue != null) | |||||
permissions = new GuildPermissions(model.OldValue.ToObject<ulong>()); | |||||
break; | |||||
} | |||||
} | |||||
if (colorRaw.HasValue) | |||||
color = new Color(colorRaw.Value); | |||||
if (permissionsRaw.HasValue) | |||||
permissions = new GuildPermissions(permissionsRaw.Value); | |||||
return new RoleDeleteAuditLogData(entry.TargetId.Value, | return new RoleDeleteAuditLogData(entry.TargetId.Value, | ||||
new RoleInfo(color, mentionable, hoist, name, permissions)); | new RoleInfo(color, mentionable, hoist, name, permissions)); | ||||
@@ -1,4 +1,6 @@ | |||||
using Model = Discord.API.AuditLog; | |||||
using System.Linq; | |||||
using Model = Discord.API.AuditLog; | |||||
using EntryModel = Discord.API.AuditLogEntry; | using EntryModel = Discord.API.AuditLogEntry; | ||||
namespace Discord.Rest | namespace Discord.Rest | ||||
@@ -16,53 +18,36 @@ namespace Discord.Rest | |||||
{ | { | ||||
var changes = entry.Changes; | var changes = entry.Changes; | ||||
var colorModel = changes.FirstOrDefault(x => x.ChangedProperty == "color"); | |||||
var mentionableModel = changes.FirstOrDefault(x => x.ChangedProperty == "mentionable"); | |||||
var hoistModel = changes.FirstOrDefault(x => x.ChangedProperty == "hoist"); | |||||
var nameModel = changes.FirstOrDefault(x => x.ChangedProperty == "name"); | |||||
var permissionsModel = changes.FirstOrDefault(x => x.ChangedProperty == "permissions"); | |||||
uint? oldColorRaw = colorModel?.OldValue?.ToObject<uint>(), | |||||
newColorRaw = colorModel?.NewValue?.ToObject<uint>(); | |||||
bool? oldMentionable = mentionableModel?.OldValue?.ToObject<bool>(), | |||||
newMentionable = mentionableModel?.NewValue?.ToObject<bool>(); | |||||
bool? oldHoist = hoistModel?.OldValue?.ToObject<bool>(), | |||||
newHoist = hoistModel?.NewValue?.ToObject<bool>(); | |||||
string oldName = nameModel?.OldValue?.ToObject<string>(), | |||||
newName = nameModel?.NewValue?.ToObject<string>(); | |||||
ulong? oldPermissionsRaw = permissionsModel?.OldValue?.ToObject<ulong>(), | |||||
newPermissionsRaw = permissionsModel?.OldValue?.ToObject<ulong>(); | |||||
Color? oldColor = null, | Color? oldColor = null, | ||||
newColor = null; | newColor = null; | ||||
bool? oldMentionable = null, | |||||
newMentionable = null; | |||||
bool? oldHoist = null, | |||||
newHoist = null; | |||||
string oldName = null, | |||||
newName = null; | |||||
GuildPermissions? oldPermissions = null, | GuildPermissions? oldPermissions = null, | ||||
newPermissions = null; | newPermissions = null; | ||||
foreach (var model in changes) | |||||
{ | |||||
switch (model.ChangedProperty) | |||||
{ | |||||
case "color": | |||||
if (model.NewValue != null) | |||||
newColor = new Color(model.NewValue.ToObject<uint>()); | |||||
if (model.OldValue != null) | |||||
oldColor = new Color(model.OldValue.ToObject<uint>()); | |||||
break; | |||||
case "mentionable": | |||||
if (model.NewValue != null) | |||||
newMentionable = model.NewValue.ToObject<bool>(); | |||||
if (model.OldValue != null) | |||||
oldMentionable = model.OldValue.ToObject<bool>(); | |||||
break; | |||||
case "hoist": | |||||
if (model.NewValue != null) | |||||
newHoist = model.NewValue.ToObject<bool>(); | |||||
if (model.OldValue != null) | |||||
oldHoist = model.OldValue.ToObject<bool>(); | |||||
break; | |||||
case "name": | |||||
if (model.NewValue != null) | |||||
newName = model.NewValue.ToObject<string>(); | |||||
if (model.OldValue != null) | |||||
oldName = model.OldValue.ToObject<string>(); | |||||
break; | |||||
case "permissions": | |||||
if (model.NewValue != null) | |||||
newPermissions = new GuildPermissions(model.NewValue.ToObject<ulong>()); | |||||
if (model.OldValue != null) | |||||
oldPermissions = new GuildPermissions(model.OldValue.ToObject<ulong>()); | |||||
break; | |||||
} | |||||
} | |||||
if (oldColorRaw.HasValue) | |||||
oldColor = new Color(oldColorRaw.Value); | |||||
if (newColorRaw.HasValue) | |||||
newColor = new Color(newColorRaw.Value); | |||||
if (oldPermissionsRaw.HasValue) | |||||
oldPermissions = new GuildPermissions(oldPermissionsRaw.Value); | |||||
if (newPermissionsRaw.HasValue) | |||||
newPermissions = new GuildPermissions(newPermissionsRaw.Value); | |||||
var oldProps = new RoleInfo(oldColor, oldMentionable, oldHoist, oldName, oldPermissions); | var oldProps = new RoleInfo(oldColor, oldMentionable, oldHoist, oldName, oldPermissions); | ||||
var newProps = new RoleInfo(newColor, newMentionable, newHoist, newName, newPermissions); | var newProps = new RoleInfo(newColor, newMentionable, newHoist, newName, newPermissions); | ||||