diff --git a/src/Discord.Net.Core/Entities/Invites/IInvite.cs b/src/Discord.Net.Core/Entities/Invites/IInvite.cs
index 993f1f047..47ffffacb 100644
--- a/src/Discord.Net.Core/Entities/Invites/IInvite.cs
+++ b/src/Discord.Net.Core/Entities/Invites/IInvite.cs
@@ -20,6 +20,13 @@ namespace Discord
///
string Url { get; }
+ ///
+ /// Gets the user that created this invite.
+ ///
+ ///
+ /// A user that created this invite.
+ ///
+ IUser Inviter { get; }
///
/// Gets the channel this invite is linked to.
///
@@ -83,5 +90,19 @@ namespace Discord
/// invite points to; null if one cannot be obtained.
///
int? MemberCount { get; }
+ ///
+ /// Gets the user this invite is linked to via .
+ ///
+ ///
+ /// A user that is linked to this invite.
+ ///
+ IUser TargetUser { get; }
+ ///
+ /// Gets the type of the linked for this invite.
+ ///
+ ///
+ /// The type of the linked user that is linked to this invite.
+ ///
+ TargetUserType TargetUserType { get; }
}
}
diff --git a/src/Discord.Net.Core/Entities/Invites/IInviteMetadata.cs b/src/Discord.Net.Core/Entities/Invites/IInviteMetadata.cs
index 471dc377f..fa327b8e2 100644
--- a/src/Discord.Net.Core/Entities/Invites/IInviteMetadata.cs
+++ b/src/Discord.Net.Core/Entities/Invites/IInviteMetadata.cs
@@ -7,20 +7,6 @@ namespace Discord
///
public interface IInviteMetadata : IInvite
{
- ///
- /// Gets the user that created this invite.
- ///
- ///
- /// A user that created this invite.
- ///
- IUser Inviter { get; }
- ///
- /// Gets a value that indicates whether the invite has been revoked.
- ///
- ///
- /// true if this invite was revoked; otherwise false.
- ///
- bool IsRevoked { get; }
///
/// Gets a value that indicates whether the invite is a temporary one.
///
@@ -36,7 +22,7 @@ namespace Discord
/// An representing the time in seconds until this invite expires; null if this
/// invite never expires.
///
- int? MaxAge { get; }
+ int MaxAge { get; }
///
/// Gets the max number of uses this invite may have.
///
@@ -44,20 +30,20 @@ namespace Discord
/// An representing the number of uses this invite may be accepted until it is removed
/// from the guild; null if none is set.
///
- int? MaxUses { get; }
+ int MaxUses { get; }
///
/// Gets the number of times this invite has been used.
///
///
/// An representing the number of times this invite has been used.
///
- int? Uses { get; }
+ int Uses { get; }
///
/// Gets when this invite was created.
///
///
/// A representing the time of which the invite was first created.
///
- DateTimeOffset? CreatedAt { get; }
+ DateTimeOffset CreatedAt { get; }
}
}
diff --git a/src/Discord.Net.Core/Entities/Invites/TargetUserType.cs b/src/Discord.Net.Core/Entities/Invites/TargetUserType.cs
new file mode 100644
index 000000000..74263b888
--- /dev/null
+++ b/src/Discord.Net.Core/Entities/Invites/TargetUserType.cs
@@ -0,0 +1,14 @@
+namespace Discord
+{
+ public enum TargetUserType
+ {
+ ///
+ /// The invite whose target user type is not defined.
+ ///
+ Undefined = 0,
+ ///
+ /// The invite is for a Go Live stream.
+ ///
+ Stream = 1
+ }
+}
diff --git a/src/Discord.Net.Rest/API/Common/Invite.cs b/src/Discord.Net.Rest/API/Common/Invite.cs
index 649bc37ec..aba267f34 100644
--- a/src/Discord.Net.Rest/API/Common/Invite.cs
+++ b/src/Discord.Net.Rest/API/Common/Invite.cs
@@ -11,9 +11,15 @@ namespace Discord.API
public Optional Guild { get; set; }
[JsonProperty("channel")]
public InviteChannel Channel { get; set; }
+ [JsonProperty("inviter")]
+ public Optional Inviter { get; set; }
[JsonProperty("approximate_presence_count")]
public Optional PresenceCount { get; set; }
[JsonProperty("approximate_member_count")]
public Optional MemberCount { get; set; }
+ [JsonProperty("target_user")]
+ public Optional TargetUser { get; set; }
+ [JsonProperty("target_user_type")]
+ public Optional TargetUserType { get; set; }
}
}
diff --git a/src/Discord.Net.Rest/API/Common/InviteMetadata.cs b/src/Discord.Net.Rest/API/Common/InviteMetadata.cs
index ca019b79b..f818de699 100644
--- a/src/Discord.Net.Rest/API/Common/InviteMetadata.cs
+++ b/src/Discord.Net.Rest/API/Common/InviteMetadata.cs
@@ -6,19 +6,15 @@ namespace Discord.API
{
internal class InviteMetadata : Invite
{
- [JsonProperty("inviter")]
- public User Inviter { get; set; }
[JsonProperty("uses")]
- public Optional Uses { get; set; }
+ public int Uses { get; set; }
[JsonProperty("max_uses")]
- public Optional MaxUses { get; set; }
+ public int MaxUses { get; set; }
[JsonProperty("max_age")]
- public Optional MaxAge { get; set; }
+ public int MaxAge { get; set; }
[JsonProperty("temporary")]
public bool Temporary { get; set; }
[JsonProperty("created_at")]
- public Optional CreatedAt { get; set; }
- [JsonProperty("revoked")]
- public bool Revoked { get; set; }
+ public DateTimeOffset CreatedAt { get; set; }
}
}
diff --git a/src/Discord.Net.Rest/Entities/Invites/RestInvite.cs b/src/Discord.Net.Rest/Entities/Invites/RestInvite.cs
index 153eb6c41..95b454c20 100644
--- a/src/Discord.Net.Rest/Entities/Invites/RestInvite.cs
+++ b/src/Discord.Net.Rest/Entities/Invites/RestInvite.cs
@@ -21,6 +21,12 @@ namespace Discord.Rest
public ulong ChannelId { get; private set; }
///
public ulong? GuildId { get; private set; }
+ ///
+ public IUser Inviter { get; private set; }
+ ///
+ public IUser TargetUser { get; private set; }
+ ///
+ public TargetUserType TargetUserType { get; private set; }
internal IChannel Channel { get; }
internal IGuild Guild { get; }
@@ -50,6 +56,9 @@ namespace Discord.Rest
MemberCount = model.MemberCount.IsSpecified ? model.MemberCount.Value : null;
PresenceCount = model.PresenceCount.IsSpecified ? model.PresenceCount.Value : null;
ChannelType = (ChannelType)model.Channel.Type;
+ Inviter = model.Inviter.IsSpecified ? RestUser.Create(Discord, model.Inviter.Value) : null;
+ TargetUser = model.TargetUser.IsSpecified ? RestUser.Create(Discord, model.TargetUser.Value) : null;
+ TargetUserType = model.TargetUserType.IsSpecified ? model.TargetUserType.Value : TargetUserType.Undefined;
}
///
diff --git a/src/Discord.Net.Rest/Entities/Invites/RestInviteMetadata.cs b/src/Discord.Net.Rest/Entities/Invites/RestInviteMetadata.cs
index 55acd5f45..9fabaef6b 100644
--- a/src/Discord.Net.Rest/Entities/Invites/RestInviteMetadata.cs
+++ b/src/Discord.Net.Rest/Entities/Invites/RestInviteMetadata.cs
@@ -6,25 +6,19 @@ namespace Discord.Rest
/// Represents additional information regarding the REST-based invite object.
public class RestInviteMetadata : RestInvite, IInviteMetadata
{
- private long? _createdAtTicks;
+ private long _createdAtTicks;
- ///
- public bool IsRevoked { get; private set; }
///
public bool IsTemporary { get; private set; }
///
- public int? MaxAge { get; private set; }
+ public int MaxAge { get; private set; }
///
- public int? MaxUses { get; private set; }
+ public int MaxUses { get; private set; }
///
- public int? Uses { get; private set; }
- ///
- /// Gets the user that created this invite.
- ///
- public RestUser Inviter { get; private set; }
+ public int Uses { get; private set; }
///
- public DateTimeOffset? CreatedAt => DateTimeUtils.FromTicks(_createdAtTicks);
+ public DateTimeOffset CreatedAt => DateTimeUtils.FromTicks(_createdAtTicks);
internal RestInviteMetadata(BaseDiscordClient discord, IGuild guild, IChannel channel, string id)
: base(discord, guild, channel, id)
@@ -39,16 +33,11 @@ namespace Discord.Rest
internal void Update(Model model)
{
base.Update(model);
- Inviter = model.Inviter != null ? RestUser.Create(Discord, model.Inviter) : null;
- IsRevoked = model.Revoked;
IsTemporary = model.Temporary;
- MaxAge = model.MaxAge.IsSpecified ? model.MaxAge.Value : (int?)null;
- MaxUses = model.MaxUses.IsSpecified ? model.MaxUses.Value : (int?)null;
- Uses = model.Uses.IsSpecified ? model.Uses.Value : (int?)null;
- _createdAtTicks = model.CreatedAt.IsSpecified ? model.CreatedAt.Value.UtcTicks : (long?)null;
+ MaxAge = model.MaxAge;
+ MaxUses = model.MaxUses;
+ Uses = model.Uses;
+ _createdAtTicks = model.CreatedAt.UtcTicks;
}
-
- ///
- IUser IInviteMetadata.Inviter => Inviter;
}
}