[Feature] Add team member Role property (#2965)
This commit is contained in:
@@ -1,25 +1,32 @@
|
|||||||
namespace Discord
|
namespace Discord;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Represents a Discord Team member.
|
||||||
|
/// </summary>
|
||||||
|
public interface ITeamMember
|
||||||
{
|
{
|
||||||
/// <summary>
|
|
||||||
/// Represents a Discord Team member.
|
|
||||||
/// </summary>
|
|
||||||
public interface ITeamMember
|
|
||||||
{
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Gets the membership state of this team member.
|
/// Gets the membership state of this team member.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
MembershipState MembershipState { get; }
|
MembershipState MembershipState { get; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Gets the permissions of this team member.
|
/// Gets the permissions of this team member.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
string[] Permissions { get; }
|
string[] Permissions { get; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Gets the team unique identifier for this team member.
|
/// Gets the team unique identifier for this team member.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
ulong TeamId { get; }
|
ulong TeamId { get; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Gets the Discord user of this team member.
|
/// Gets the Discord user of this team member.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
IUser User { get; }
|
IUser User { get; }
|
||||||
}
|
|
||||||
|
/// <summary>
|
||||||
|
/// Gets the role of this team member.
|
||||||
|
/// </summary>
|
||||||
|
public TeamRole Role { get; }
|
||||||
}
|
}
|
||||||
|
|||||||
27
src/Discord.Net.Core/Entities/Teams/TeamRole.cs
Normal file
27
src/Discord.Net.Core/Entities/Teams/TeamRole.cs
Normal file
@@ -0,0 +1,27 @@
|
|||||||
|
namespace Discord;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Represents a Discord Team member role.
|
||||||
|
/// </summary>
|
||||||
|
public enum TeamRole
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// The user is the owner of the team.
|
||||||
|
/// </summary>
|
||||||
|
Owner,
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// The user is an admin in the team.
|
||||||
|
/// </summary>
|
||||||
|
Admin,
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// The user is a developer in the team.
|
||||||
|
/// </summary>
|
||||||
|
Developer,
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// The user is a read-only member of the team.
|
||||||
|
/// </summary>
|
||||||
|
ReadOnly,
|
||||||
|
}
|
||||||
@@ -1,16 +1,21 @@
|
|||||||
using Newtonsoft.Json;
|
using Newtonsoft.Json;
|
||||||
|
|
||||||
namespace Discord.API
|
namespace Discord.API;
|
||||||
|
|
||||||
|
internal class TeamMember
|
||||||
{
|
{
|
||||||
internal class TeamMember
|
|
||||||
{
|
|
||||||
[JsonProperty("membership_state")]
|
[JsonProperty("membership_state")]
|
||||||
public MembershipState MembershipState { get; set; }
|
public MembershipState MembershipState { get; set; }
|
||||||
|
|
||||||
[JsonProperty("permissions")]
|
[JsonProperty("permissions")]
|
||||||
public string[] Permissions { get; set; }
|
public string[] Permissions { get; set; }
|
||||||
|
|
||||||
[JsonProperty("team_id")]
|
[JsonProperty("team_id")]
|
||||||
public ulong TeamId { get; set; }
|
public ulong TeamId { get; set; }
|
||||||
|
|
||||||
[JsonProperty("user")]
|
[JsonProperty("user")]
|
||||||
public User User { get; set; }
|
public User User { get; set; }
|
||||||
}
|
|
||||||
|
[JsonProperty("role")]
|
||||||
|
public string Role { get; set; }
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -34,7 +34,7 @@ namespace Discord.Rest
|
|||||||
_iconId = model.Icon.Value;
|
_iconId = model.Icon.Value;
|
||||||
Name = model.Name;
|
Name = model.Name;
|
||||||
OwnerUserId = model.OwnerUserId;
|
OwnerUserId = model.OwnerUserId;
|
||||||
TeamMembers = model.TeamMembers.Select(x => new RestTeamMember(Discord, x)).ToImmutableArray();
|
TeamMembers = model.TeamMembers.Select(x => new RestTeamMember(Discord, x, model)).ToImmutableArray();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,20 +1,28 @@
|
|||||||
using System;
|
using System;
|
||||||
using Model = Discord.API.TeamMember;
|
|
||||||
|
|
||||||
namespace Discord.Rest
|
using Model = Discord.API.TeamMember;
|
||||||
|
using TeamModel = Discord.API.Team;
|
||||||
|
|
||||||
|
namespace Discord.Rest;
|
||||||
|
|
||||||
|
public class RestTeamMember : ITeamMember
|
||||||
{
|
{
|
||||||
public class RestTeamMember : ITeamMember
|
|
||||||
{
|
|
||||||
/// <inheritdoc />
|
/// <inheritdoc />
|
||||||
public MembershipState MembershipState { get; }
|
public MembershipState MembershipState { get; }
|
||||||
|
|
||||||
/// <inheritdoc />
|
/// <inheritdoc />
|
||||||
public string[] Permissions { get; }
|
public string[] Permissions { get; }
|
||||||
|
|
||||||
/// <inheritdoc />
|
/// <inheritdoc />
|
||||||
public ulong TeamId { get; }
|
public ulong TeamId { get; }
|
||||||
|
|
||||||
/// <inheritdoc />
|
/// <inheritdoc />
|
||||||
public IUser User { get; }
|
public IUser User { get; }
|
||||||
|
|
||||||
internal RestTeamMember(BaseDiscordClient discord, Model model)
|
/// <inheritdoc />
|
||||||
|
public TeamRole Role { get; }
|
||||||
|
|
||||||
|
internal RestTeamMember(BaseDiscordClient discord, Model model, TeamModel team)
|
||||||
{
|
{
|
||||||
MembershipState = model.MembershipState switch
|
MembershipState = model.MembershipState switch
|
||||||
{
|
{
|
||||||
@@ -25,6 +33,16 @@ namespace Discord.Rest
|
|||||||
Permissions = model.Permissions;
|
Permissions = model.Permissions;
|
||||||
TeamId = model.TeamId;
|
TeamId = model.TeamId;
|
||||||
User = RestUser.Create(discord, model.User);
|
User = RestUser.Create(discord, model.User);
|
||||||
}
|
|
||||||
|
if (team.OwnerUserId == model.User.Id)
|
||||||
|
Role = TeamRole.Owner;
|
||||||
|
else
|
||||||
|
Role = model.Role switch
|
||||||
|
{
|
||||||
|
"admin" => TeamRole.Admin,
|
||||||
|
"developer" => TeamRole.Developer,
|
||||||
|
"read_only" => TeamRole.ReadOnly,
|
||||||
|
_ => 0
|
||||||
|
};
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user