Browse Source

Resolve NRE at get audit for Deleted User (#2304)

tags/3.7.0
Armano den Boef GitHub 3 years ago
parent
commit
94a37156f3
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
11 changed files with 41 additions and 13 deletions
  1. +4
    -1
      src/Discord.Net.Rest/Entities/AuditLogs/DataTypes/BanAuditLogData.cs
  2. +4
    -1
      src/Discord.Net.Rest/Entities/AuditLogs/DataTypes/BotAddAuditLogData.cs
  3. +4
    -1
      src/Discord.Net.Rest/Entities/AuditLogs/DataTypes/InviteCreateAuditLogData.cs
  4. +4
    -1
      src/Discord.Net.Rest/Entities/AuditLogs/DataTypes/InviteDeleteAuditLogData.cs
  5. +5
    -2
      src/Discord.Net.Rest/Entities/AuditLogs/DataTypes/KickAuditLogData.cs
  6. +1
    -1
      src/Discord.Net.Rest/Entities/AuditLogs/DataTypes/MemberRoleAuditLogData.cs
  7. +4
    -1
      src/Discord.Net.Rest/Entities/AuditLogs/DataTypes/MemberUpdateAuditLogData.cs
  8. +5
    -1
      src/Discord.Net.Rest/Entities/AuditLogs/DataTypes/MessageDeleteAuditLogData.cs
  9. +4
    -1
      src/Discord.Net.Rest/Entities/AuditLogs/DataTypes/MessagePinAuditLogData.cs
  10. +4
    -1
      src/Discord.Net.Rest/Entities/AuditLogs/DataTypes/MessageUnpinAuditLogData.cs
  11. +2
    -2
      src/Discord.Net.Rest/Entities/AuditLogs/DataTypes/UnbanAuditLogData.cs

+ 4
- 1
src/Discord.Net.Rest/Entities/AuditLogs/DataTypes/BanAuditLogData.cs View File

@@ -18,12 +18,15 @@ namespace Discord.Rest
internal static BanAuditLogData Create(BaseDiscordClient discord, Model log, EntryModel entry) internal static BanAuditLogData Create(BaseDiscordClient discord, Model log, EntryModel entry)
{ {
var userInfo = log.Users.FirstOrDefault(x => x.Id == entry.TargetId); var userInfo = log.Users.FirstOrDefault(x => x.Id == entry.TargetId);
return new BanAuditLogData(RestUser.Create(discord, userInfo));
return new BanAuditLogData((userInfo != null) ? RestUser.Create(discord, userInfo) : null);
} }


/// <summary> /// <summary>
/// Gets the user that was banned. /// Gets the user that was banned.
/// </summary> /// </summary>
/// <remarks>
/// Will be <see langword="null"/> if the user is a 'Deleted User#....' because Discord does send user data for deleted users.
/// </remarks>
/// <returns> /// <returns>
/// A user object representing the banned user. /// A user object representing the banned user.
/// </returns> /// </returns>


+ 4
- 1
src/Discord.Net.Rest/Entities/AuditLogs/DataTypes/BotAddAuditLogData.cs View File

@@ -18,12 +18,15 @@ namespace Discord.Rest
internal static BotAddAuditLogData Create(BaseDiscordClient discord, Model log, EntryModel entry) internal static BotAddAuditLogData Create(BaseDiscordClient discord, Model log, EntryModel entry)
{ {
var userInfo = log.Users.FirstOrDefault(x => x.Id == entry.TargetId); var userInfo = log.Users.FirstOrDefault(x => x.Id == entry.TargetId);
return new BotAddAuditLogData(RestUser.Create(discord, userInfo));
return new BotAddAuditLogData((userInfo != null) ? RestUser.Create(discord, userInfo) : null);
} }


/// <summary> /// <summary>
/// Gets the bot that was added. /// Gets the bot that was added.
/// </summary> /// </summary>
/// <remarks>
/// Will be <see langword="null"/> if the bot is a 'Deleted User#....' because Discord does send user data for deleted users.
/// </remarks>
/// <returns> /// <returns>
/// A user object representing the bot. /// A user object representing the bot.
/// </returns> /// </returns>


+ 4
- 1
src/Discord.Net.Rest/Entities/AuditLogs/DataTypes/InviteCreateAuditLogData.cs View File

@@ -45,7 +45,7 @@ namespace Discord.Rest
{ {
var inviterId = inviterIdModel.NewValue.ToObject<ulong>(discord.ApiClient.Serializer); var inviterId = inviterIdModel.NewValue.ToObject<ulong>(discord.ApiClient.Serializer);
var inviterInfo = log.Users.FirstOrDefault(x => x.Id == inviterId); var inviterInfo = log.Users.FirstOrDefault(x => x.Id == inviterId);
inviter = RestUser.Create(discord, inviterInfo);
inviter = (inviterInfo != null) ? RestUser.Create(discord, inviterInfo) : null;
} }


return new InviteCreateAuditLogData(maxAge, code, temporary, inviter, channelId, uses, maxUses); return new InviteCreateAuditLogData(maxAge, code, temporary, inviter, channelId, uses, maxUses);
@@ -76,6 +76,9 @@ namespace Discord.Rest
/// <summary> /// <summary>
/// Gets the user that created this invite if available. /// Gets the user that created this invite if available.
/// </summary> /// </summary>
/// <remarks>
/// Will be <see langword="null"/> if the user is a 'Deleted User#....' because Discord does send user data for deleted users.
/// </remarks>
/// <returns> /// <returns>
/// A user that created this invite or <see langword="null"/>. /// A user that created this invite or <see langword="null"/>.
/// </returns> /// </returns>


+ 4
- 1
src/Discord.Net.Rest/Entities/AuditLogs/DataTypes/InviteDeleteAuditLogData.cs View File

@@ -45,7 +45,7 @@ namespace Discord.Rest
{ {
var inviterId = inviterIdModel.OldValue.ToObject<ulong>(discord.ApiClient.Serializer); var inviterId = inviterIdModel.OldValue.ToObject<ulong>(discord.ApiClient.Serializer);
var inviterInfo = log.Users.FirstOrDefault(x => x.Id == inviterId); var inviterInfo = log.Users.FirstOrDefault(x => x.Id == inviterId);
inviter = RestUser.Create(discord, inviterInfo);
inviter = (inviterInfo != null) ? RestUser.Create(discord, inviterInfo) : null;
} }


return new InviteDeleteAuditLogData(maxAge, code, temporary, inviter, channelId, uses, maxUses); return new InviteDeleteAuditLogData(maxAge, code, temporary, inviter, channelId, uses, maxUses);
@@ -76,6 +76,9 @@ namespace Discord.Rest
/// <summary> /// <summary>
/// Gets the user that created this invite if available. /// Gets the user that created this invite if available.
/// </summary> /// </summary>
/// <remarks>
/// Will be <see langword="null"/> if the user is a 'Deleted User#....' because Discord does send user data for deleted users.
/// </remarks>
/// <returns> /// <returns>
/// A user that created this invite or <see langword="null"/>. /// A user that created this invite or <see langword="null"/>.
/// </returns> /// </returns>


+ 5
- 2
src/Discord.Net.Rest/Entities/AuditLogs/DataTypes/KickAuditLogData.cs View File

@@ -1,4 +1,4 @@
using System.Linq;
using System.Linq;


using Model = Discord.API.AuditLog; using Model = Discord.API.AuditLog;
using EntryModel = Discord.API.AuditLogEntry; using EntryModel = Discord.API.AuditLogEntry;
@@ -18,12 +18,15 @@ namespace Discord.Rest
internal static KickAuditLogData Create(BaseDiscordClient discord, Model log, EntryModel entry) internal static KickAuditLogData Create(BaseDiscordClient discord, Model log, EntryModel entry)
{ {
var userInfo = log.Users.FirstOrDefault(x => x.Id == entry.TargetId); var userInfo = log.Users.FirstOrDefault(x => x.Id == entry.TargetId);
return new KickAuditLogData(RestUser.Create(discord, userInfo));
return new KickAuditLogData((userInfo != null) ? RestUser.Create(discord, userInfo) : null);
} }


/// <summary> /// <summary>
/// Gets the user that was kicked. /// Gets the user that was kicked.
/// </summary> /// </summary>
/// <remarks>
/// Will be <see langword="null"/> if the user is a 'Deleted User#....' because Discord does send user data for deleted users.
/// </remarks>
/// <returns> /// <returns>
/// A user object representing the kicked user. /// A user object representing the kicked user.
/// </returns> /// </returns>


+ 1
- 1
src/Discord.Net.Rest/Entities/AuditLogs/DataTypes/MemberRoleAuditLogData.cs View File

@@ -27,7 +27,7 @@ namespace Discord.Rest
.ToList(); .ToList();


var userInfo = log.Users.FirstOrDefault(x => x.Id == entry.TargetId); var userInfo = log.Users.FirstOrDefault(x => x.Id == entry.TargetId);
var user = RestUser.Create(discord, userInfo);
RestUser user = (userInfo != null) ? RestUser.Create(discord, userInfo) : null;


return new MemberRoleAuditLogData(roleInfos.ToReadOnlyCollection(), user); return new MemberRoleAuditLogData(roleInfos.ToReadOnlyCollection(), user);
} }


+ 4
- 1
src/Discord.Net.Rest/Entities/AuditLogs/DataTypes/MemberUpdateAuditLogData.cs View File

@@ -33,7 +33,7 @@ namespace Discord.Rest
newMute = muteModel?.NewValue?.ToObject<bool>(discord.ApiClient.Serializer); newMute = muteModel?.NewValue?.ToObject<bool>(discord.ApiClient.Serializer);


var targetInfo = log.Users.FirstOrDefault(x => x.Id == entry.TargetId); var targetInfo = log.Users.FirstOrDefault(x => x.Id == entry.TargetId);
var user = RestUser.Create(discord, targetInfo);
RestUser user = (targetInfo != null) ? RestUser.Create(discord, targetInfo) : null;


var before = new MemberInfo(oldNick, oldDeaf, oldMute); var before = new MemberInfo(oldNick, oldDeaf, oldMute);
var after = new MemberInfo(newNick, newDeaf, newMute); var after = new MemberInfo(newNick, newDeaf, newMute);
@@ -44,6 +44,9 @@ namespace Discord.Rest
/// <summary> /// <summary>
/// Gets the user that the changes were performed on. /// Gets the user that the changes were performed on.
/// </summary> /// </summary>
/// <remarks>
/// Will be <see langword="null"/> if the user is a 'Deleted User#....' because Discord does send user data for deleted users.
/// </remarks>
/// <returns> /// <returns>
/// A user object representing the user who the changes were performed on. /// A user object representing the user who the changes were performed on.
/// </returns> /// </returns>


+ 5
- 1
src/Discord.Net.Rest/Entities/AuditLogs/DataTypes/MessageDeleteAuditLogData.cs View File

@@ -2,6 +2,7 @@ using System.Linq;


using Model = Discord.API.AuditLog; using Model = Discord.API.AuditLog;
using EntryModel = Discord.API.AuditLogEntry; using EntryModel = Discord.API.AuditLogEntry;
using System;


namespace Discord.Rest namespace Discord.Rest
{ {
@@ -20,7 +21,7 @@ namespace Discord.Rest
internal static MessageDeleteAuditLogData Create(BaseDiscordClient discord, Model log, EntryModel entry) internal static MessageDeleteAuditLogData Create(BaseDiscordClient discord, Model log, EntryModel entry)
{ {
var userInfo = log.Users.FirstOrDefault(x => x.Id == entry.TargetId); var userInfo = log.Users.FirstOrDefault(x => x.Id == entry.TargetId);
return new MessageDeleteAuditLogData(entry.Options.ChannelId.Value, entry.Options.Count.Value, RestUser.Create(discord, userInfo));
return new MessageDeleteAuditLogData(entry.Options.ChannelId.Value, entry.Options.Count.Value, userInfo != null ? RestUser.Create(discord, userInfo) : null);
} }


/// <summary> /// <summary>
@@ -41,6 +42,9 @@ namespace Discord.Rest
/// <summary> /// <summary>
/// Gets the user of the messages that were deleted. /// Gets the user of the messages that were deleted.
/// </summary> /// </summary>
/// <remarks>
/// Will be <see langword="null"/> if the user is a 'Deleted User#....' because Discord does send user data for deleted users.
/// </remarks>
/// <returns> /// <returns>
/// A user object representing the user that created the deleted messages. /// A user object representing the user that created the deleted messages.
/// </returns> /// </returns>


+ 4
- 1
src/Discord.Net.Rest/Entities/AuditLogs/DataTypes/MessagePinAuditLogData.cs View File

@@ -23,7 +23,7 @@ namespace Discord.Rest
if (entry.TargetId.HasValue) if (entry.TargetId.HasValue)
{ {
var userInfo = log.Users.FirstOrDefault(x => x.Id == entry.TargetId); var userInfo = log.Users.FirstOrDefault(x => x.Id == entry.TargetId);
user = RestUser.Create(discord, userInfo);
user = (userInfo != null) ? RestUser.Create(discord, userInfo) : null;
} }


return new MessagePinAuditLogData(entry.Options.MessageId.Value, entry.Options.ChannelId.Value, user); return new MessagePinAuditLogData(entry.Options.MessageId.Value, entry.Options.ChannelId.Value, user);
@@ -46,6 +46,9 @@ namespace Discord.Rest
/// <summary> /// <summary>
/// Gets the user of the message that was pinned if available. /// Gets the user of the message that was pinned if available.
/// </summary> /// </summary>
/// <remarks>
/// Will be <see langword="null"/> if the user is a 'Deleted User#....' because Discord does send user data for deleted users.
/// </remarks>
/// <returns> /// <returns>
/// A user object representing the user that created the pinned message or <see langword="null"/>. /// A user object representing the user that created the pinned message or <see langword="null"/>.
/// </returns> /// </returns>


+ 4
- 1
src/Discord.Net.Rest/Entities/AuditLogs/DataTypes/MessageUnpinAuditLogData.cs View File

@@ -23,7 +23,7 @@ namespace Discord.Rest
if (entry.TargetId.HasValue) if (entry.TargetId.HasValue)
{ {
var userInfo = log.Users.FirstOrDefault(x => x.Id == entry.TargetId); var userInfo = log.Users.FirstOrDefault(x => x.Id == entry.TargetId);
user = RestUser.Create(discord, userInfo);
user = (userInfo != null) ? RestUser.Create(discord, userInfo) : null;
} }


return new MessageUnpinAuditLogData(entry.Options.MessageId.Value, entry.Options.ChannelId.Value, user); return new MessageUnpinAuditLogData(entry.Options.MessageId.Value, entry.Options.ChannelId.Value, user);
@@ -46,6 +46,9 @@ namespace Discord.Rest
/// <summary> /// <summary>
/// Gets the user of the message that was unpinned if available. /// Gets the user of the message that was unpinned if available.
/// </summary> /// </summary>
/// <remarks>
/// Will be <see langword="null"/> if the user is a 'Deleted User#....' because Discord does send user data for deleted users.
/// </remarks>
/// <returns> /// <returns>
/// A user object representing the user that created the unpinned message or <see langword="null"/>. /// A user object representing the user that created the unpinned message or <see langword="null"/>.
/// </returns> /// </returns>


+ 2
- 2
src/Discord.Net.Rest/Entities/AuditLogs/DataTypes/UnbanAuditLogData.cs View File

@@ -1,4 +1,4 @@
using System.Linq;
using System.Linq;


using Model = Discord.API.AuditLog; using Model = Discord.API.AuditLog;
using EntryModel = Discord.API.AuditLogEntry; using EntryModel = Discord.API.AuditLogEntry;
@@ -18,7 +18,7 @@ namespace Discord.Rest
internal static UnbanAuditLogData Create(BaseDiscordClient discord, Model log, EntryModel entry) internal static UnbanAuditLogData Create(BaseDiscordClient discord, Model log, EntryModel entry)
{ {
var userInfo = log.Users.FirstOrDefault(x => x.Id == entry.TargetId); var userInfo = log.Users.FirstOrDefault(x => x.Id == entry.TargetId);
return new UnbanAuditLogData(RestUser.Create(discord, userInfo));
return new UnbanAuditLogData((userInfo != null) ? RestUser.Create(discord, userInfo) : null);
} }


/// <summary> /// <summary>


Loading…
Cancel
Save