diff --git a/src/Discord.Net.Core/Entities/AuditLogs/ActionType.cs b/src/Discord.Net.Core/Entities/AuditLogs/ActionType.cs
index 2561a0970..1728b2021 100644
--- a/src/Discord.Net.Core/Entities/AuditLogs/ActionType.cs
+++ b/src/Discord.Net.Core/Entities/AuditLogs/ActionType.cs
@@ -61,6 +61,18 @@ namespace Discord
/// A guild member's role collection was updated.
///
MemberRoleUpdated = 25,
+ ///
+ /// A guild member moved to a voice channel.
+ ///
+ MemberMoved = 26,
+ ///
+ /// A guild member disconnected from a voice channel.
+ ///
+ MemberDisconnected = 27,
+ ///
+ /// A bot was added to this guild.
+ ///
+ BotAdded = 28,
///
/// A role was created in this guild.
@@ -117,6 +129,18 @@ namespace Discord
///
/// A message was deleted from this guild.
///
- MessageDeleted = 72
+ MessageDeleted = 72,
+ ///
+ /// Multiple messages were deleted from this guild.
+ ///
+ MessageBulkDeleted = 73,
+ ///
+ /// A message was pinned from this guild.
+ ///
+ MessagePinned = 74,
+ ///
+ /// A message was unpinned from this guild.
+ ///
+ MessageUnpinned = 75,
}
}
diff --git a/src/Discord.Net.Rest/API/Common/AuditLogOptions.cs b/src/Discord.Net.Rest/API/Common/AuditLogOptions.cs
index 24141d90c..b666215e2 100644
--- a/src/Discord.Net.Rest/API/Common/AuditLogOptions.cs
+++ b/src/Discord.Net.Rest/API/Common/AuditLogOptions.cs
@@ -4,11 +4,12 @@ namespace Discord.API
{
internal class AuditLogOptions
{
- //Message delete
[JsonProperty("count")]
- public int? MessageDeleteCount { get; set; }
+ public int? Count { get; set; }
[JsonProperty("channel_id")]
- public ulong? MessageDeleteChannelId { get; set; }
+ public ulong? ChannelId { get; set; }
+ [JsonProperty("message_id")]
+ public ulong? MessageId { get; set; }
//Prune
[JsonProperty("delete_member_days")]
diff --git a/src/Discord.Net.Rest/Entities/AuditLogs/AuditLogHelper.cs b/src/Discord.Net.Rest/Entities/AuditLogs/AuditLogHelper.cs
index 7936343f3..696917203 100644
--- a/src/Discord.Net.Rest/Entities/AuditLogs/AuditLogHelper.cs
+++ b/src/Discord.Net.Rest/Entities/AuditLogs/AuditLogHelper.cs
@@ -27,6 +27,9 @@ namespace Discord.Rest
[ActionType.Unban] = UnbanAuditLogData.Create,
[ActionType.MemberUpdated] = MemberUpdateAuditLogData.Create,
[ActionType.MemberRoleUpdated] = MemberRoleAuditLogData.Create,
+ [ActionType.MemberMoved] = MemberMoveAuditLogData.Create,
+ [ActionType.MemberDisconnected] = MemberDisconnectAuditLogData.Create,
+ [ActionType.BotAdded] = BotAddAuditLogData.Create,
[ActionType.RoleCreated] = RoleCreateAuditLogData.Create,
[ActionType.RoleUpdated] = RoleUpdateAuditLogData.Create,
@@ -45,6 +48,9 @@ namespace Discord.Rest
[ActionType.EmojiDeleted] = EmoteDeleteAuditLogData.Create,
[ActionType.MessageDeleted] = MessageDeleteAuditLogData.Create,
+ [ActionType.MessageBulkDeleted] = MessageBulkDeleteAuditLogData.Create,
+ [ActionType.MessagePinned] = MessagePinAuditLogData.Create,
+ [ActionType.MessageUnpinned] = MessageUnpinAuditLogData.Create,
};
public static IAuditLogData CreateData(BaseDiscordClient discord, Model log, EntryModel entry)
diff --git a/src/Discord.Net.Rest/Entities/AuditLogs/DataTypes/BotAddAuditLogData.cs b/src/Discord.Net.Rest/Entities/AuditLogs/DataTypes/BotAddAuditLogData.cs
new file mode 100644
index 000000000..0d12e4609
--- /dev/null
+++ b/src/Discord.Net.Rest/Entities/AuditLogs/DataTypes/BotAddAuditLogData.cs
@@ -0,0 +1,32 @@
+using System.Linq;
+
+using Model = Discord.API.AuditLog;
+using EntryModel = Discord.API.AuditLogEntry;
+
+namespace Discord.Rest
+{
+ ///
+ /// Contains a piece of audit log data related to a adding a bot to a guild.
+ ///
+ public class BotAddAuditLogData : IAuditLogData
+ {
+ private BotAddAuditLogData(IUser bot)
+ {
+ Target = bot;
+ }
+
+ internal static BotAddAuditLogData Create(BaseDiscordClient discord, Model log, EntryModel entry)
+ {
+ var userInfo = log.Users.FirstOrDefault(x => x.Id == entry.TargetId);
+ return new BotAddAuditLogData(RestUser.Create(discord, userInfo));
+ }
+
+ ///
+ /// Gets the bot that was added.
+ ///
+ ///
+ /// A user object representing the bot.
+ ///
+ public IUser Target { get; }
+ }
+}
diff --git a/src/Discord.Net.Rest/Entities/AuditLogs/DataTypes/MemberDisconnectAuditLogData.cs b/src/Discord.Net.Rest/Entities/AuditLogs/DataTypes/MemberDisconnectAuditLogData.cs
new file mode 100644
index 000000000..b0374dc86
--- /dev/null
+++ b/src/Discord.Net.Rest/Entities/AuditLogs/DataTypes/MemberDisconnectAuditLogData.cs
@@ -0,0 +1,29 @@
+using Model = Discord.API.AuditLog;
+using EntryModel = Discord.API.AuditLogEntry;
+
+namespace Discord.Rest
+{
+ ///
+ /// Contains a piece of audit log data related to disconnecting members from voice channels.
+ ///
+ public class MemberDisconnectAuditLogData : IAuditLogData
+ {
+ private MemberDisconnectAuditLogData(int count)
+ {
+ MemberCount = count;
+ }
+
+ internal static MemberDisconnectAuditLogData Create(BaseDiscordClient discord, Model log, EntryModel entry)
+ {
+ return new MemberDisconnectAuditLogData(entry.Options.Count.Value);
+ }
+
+ ///
+ /// Gets the number of members that were disconnected.
+ ///
+ ///
+ /// An representing the number of members that were disconnected from a voice channel.
+ ///
+ public int MemberCount { get; }
+ }
+}
diff --git a/src/Discord.Net.Rest/Entities/AuditLogs/DataTypes/MemberMoveAuditLogData.cs b/src/Discord.Net.Rest/Entities/AuditLogs/DataTypes/MemberMoveAuditLogData.cs
new file mode 100644
index 000000000..f5373d34d
--- /dev/null
+++ b/src/Discord.Net.Rest/Entities/AuditLogs/DataTypes/MemberMoveAuditLogData.cs
@@ -0,0 +1,37 @@
+using Model = Discord.API.AuditLog;
+using EntryModel = Discord.API.AuditLogEntry;
+
+namespace Discord.Rest
+{
+ ///
+ /// Contains a piece of audit log data related to moving members between voice channels.
+ ///
+ public class MemberMoveAuditLogData : IAuditLogData
+ {
+ private MemberMoveAuditLogData(ulong channelId, int count)
+ {
+ ChannelId = channelId;
+ MemberCount = count;
+ }
+
+ internal static MemberMoveAuditLogData Create(BaseDiscordClient discord, Model log, EntryModel entry)
+ {
+ return new MemberMoveAuditLogData(entry.Options.ChannelId.Value, entry.Options.Count.Value);
+ }
+
+ ///
+ /// Gets the ID of the channel that the members were moved to.
+ ///
+ ///
+ /// A representing the snowflake identifier for the channel that the members were moved to.
+ ///
+ public ulong ChannelId { get; }
+ ///
+ /// Gets the number of members that were moved.
+ ///
+ ///
+ /// An representing the number of members that were moved to another voice channel.
+ ///
+ public int MemberCount { get; }
+ }
+}
diff --git a/src/Discord.Net.Rest/Entities/AuditLogs/DataTypes/MessageBulkDeleteAuditLogData.cs b/src/Discord.Net.Rest/Entities/AuditLogs/DataTypes/MessageBulkDeleteAuditLogData.cs
new file mode 100644
index 000000000..7a9846349
--- /dev/null
+++ b/src/Discord.Net.Rest/Entities/AuditLogs/DataTypes/MessageBulkDeleteAuditLogData.cs
@@ -0,0 +1,38 @@
+using Model = Discord.API.AuditLog;
+using EntryModel = Discord.API.AuditLogEntry;
+
+namespace Discord.Rest
+{
+ ///
+ /// Contains a piece of audit log data related to message deletion(s).
+ ///
+ public class MessageBulkDeleteAuditLogData : IAuditLogData
+ {
+ private MessageBulkDeleteAuditLogData(ulong channelId, int count)
+ {
+ ChannelId = channelId;
+ MessageCount = count;
+ }
+
+ internal static MessageBulkDeleteAuditLogData Create(BaseDiscordClient discord, Model log, EntryModel entry)
+ {
+ return new MessageBulkDeleteAuditLogData(entry.TargetId.Value, entry.Options.Count.Value);
+ }
+
+ ///
+ /// Gets the ID of the channel that the messages were deleted from.
+ ///
+ ///
+ /// A representing the snowflake identifier for the channel that the messages were
+ /// deleted from.
+ ///
+ public ulong ChannelId { get; }
+ ///
+ /// Gets the number of messages that were deleted.
+ ///
+ ///
+ /// An representing the number of messages that were deleted from the channel.
+ ///
+ public int MessageCount { get; }
+ }
+}
diff --git a/src/Discord.Net.Rest/Entities/AuditLogs/DataTypes/MessageDeleteAuditLogData.cs b/src/Discord.Net.Rest/Entities/AuditLogs/DataTypes/MessageDeleteAuditLogData.cs
index c6b2e1053..66b3f7d83 100644
--- a/src/Discord.Net.Rest/Entities/AuditLogs/DataTypes/MessageDeleteAuditLogData.cs
+++ b/src/Discord.Net.Rest/Entities/AuditLogs/DataTypes/MessageDeleteAuditLogData.cs
@@ -1,3 +1,5 @@
+using System.Linq;
+
using Model = Discord.API.AuditLog;
using EntryModel = Discord.API.AuditLogEntry;
@@ -8,16 +10,17 @@ namespace Discord.Rest
///
public class MessageDeleteAuditLogData : IAuditLogData
{
- private MessageDeleteAuditLogData(ulong channelId, int count, ulong authorId)
+ private MessageDeleteAuditLogData(ulong channelId, int count, IUser user)
{
ChannelId = channelId;
MessageCount = count;
- AuthorId = authorId;
+ Target = user;
}
internal static MessageDeleteAuditLogData Create(BaseDiscordClient discord, Model log, EntryModel entry)
{
- return new MessageDeleteAuditLogData(entry.Options.MessageDeleteChannelId.Value, entry.Options.MessageDeleteCount.Value, entry.TargetId.Value);
+ 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));
}
///
@@ -36,11 +39,11 @@ namespace Discord.Rest
///
public ulong ChannelId { get; }
///
- /// Gets the author of the messages that were deleted.
+ /// Gets the user of the messages that were deleted.
///
///
- /// A representing the snowflake identifier for the user that created the deleted messages.
+ /// A user object representing the user that created the deleted messages.
///
- public ulong AuthorId { get; }
+ public IUser Target { get; }
}
}
diff --git a/src/Discord.Net.Rest/Entities/AuditLogs/DataTypes/MessagePinAuditLogData.cs b/src/Discord.Net.Rest/Entities/AuditLogs/DataTypes/MessagePinAuditLogData.cs
new file mode 100644
index 000000000..020171152
--- /dev/null
+++ b/src/Discord.Net.Rest/Entities/AuditLogs/DataTypes/MessagePinAuditLogData.cs
@@ -0,0 +1,48 @@
+using System.Linq;
+
+using Model = Discord.API.AuditLog;
+using EntryModel = Discord.API.AuditLogEntry;
+
+namespace Discord.Rest
+{
+ ///
+ /// Contains a piece of audit log data related to a pinned message.
+ ///
+ public class MessagePinAuditLogData : IAuditLogData
+ {
+ private MessagePinAuditLogData(ulong messageId, ulong channelId, IUser user)
+ {
+ MessageId = messageId;
+ ChannelId = channelId;
+ Target = user;
+ }
+
+ internal static MessagePinAuditLogData Create(BaseDiscordClient discord, Model log, EntryModel entry)
+ {
+ var userInfo = log.Users.FirstOrDefault(x => x.Id == entry.TargetId);
+ return new MessagePinAuditLogData(entry.Options.MessageId.Value, entry.Options.ChannelId.Value, RestUser.Create(discord, userInfo));
+ }
+
+ ///
+ /// Gets the ID of the messages that was pinned.
+ ///
+ ///
+ /// A representing the snowflake identifier for the messages that was pinned.
+ ///
+ public ulong MessageId { get; }
+ ///
+ /// Gets the ID of the channel that the message was pinned from.
+ ///
+ ///
+ /// A representing the snowflake identifier for the channel that the message was pinned from.
+ ///
+ public ulong ChannelId { get; }
+ ///
+ /// Gets the user of the message that was pinned.
+ ///
+ ///
+ /// A user object representing the user that created the pinned message.
+ ///
+ public IUser Target { get; }
+ }
+}
diff --git a/src/Discord.Net.Rest/Entities/AuditLogs/DataTypes/MessageUnpinAuditLogData.cs b/src/Discord.Net.Rest/Entities/AuditLogs/DataTypes/MessageUnpinAuditLogData.cs
new file mode 100644
index 000000000..1b3ff96f3
--- /dev/null
+++ b/src/Discord.Net.Rest/Entities/AuditLogs/DataTypes/MessageUnpinAuditLogData.cs
@@ -0,0 +1,48 @@
+using System.Linq;
+
+using Model = Discord.API.AuditLog;
+using EntryModel = Discord.API.AuditLogEntry;
+
+namespace Discord.Rest
+{
+ ///
+ /// Contains a piece of audit log data related to an unpinned message.
+ ///
+ public class MessageUnpinAuditLogData : IAuditLogData
+ {
+ private MessageUnpinAuditLogData(ulong messageId, ulong channelId, IUser user)
+ {
+ MessageId = messageId;
+ ChannelId = channelId;
+ Target = user;
+ }
+
+ internal static MessageUnpinAuditLogData Create(BaseDiscordClient discord, Model log, EntryModel entry)
+ {
+ var userInfo = log.Users.FirstOrDefault(x => x.Id == entry.TargetId);
+ return new MessageUnpinAuditLogData(entry.Options.MessageId.Value, entry.Options.ChannelId.Value, RestUser.Create(discord, userInfo));
+ }
+
+ ///
+ /// Gets the ID of the messages that was unpinned.
+ ///
+ ///
+ /// A representing the snowflake identifier for the messages that was unpinned.
+ ///
+ public ulong MessageId { get; }
+ ///
+ /// Gets the ID of the channel that the message was unpinned from.
+ ///
+ ///
+ /// A representing the snowflake identifier for the channel that the message was unpinned from.
+ ///
+ public ulong ChannelId { get; }
+ ///
+ /// Gets the user of the message that was unpinned.
+ ///
+ ///
+ /// A user object representing the user that created the unpinned message.
+ ///
+ public IUser Target { get; }
+ }
+}