* initial commit * Update src/Discord.Net.Core/Entities/Guilds/GuildProperties.cs --------- Co-authored-by: Casmir <68127614+csmir@users.noreply.github.com>dev
@@ -34,11 +34,11 @@ namespace Discord | |||||
/// </summary> | /// </summary> | ||||
Commerce = 1L << 4, | Commerce = 1L << 4, | ||||
/// <summary> | /// <summary> | ||||
/// The guild can enable welcome screen, Membership Screening, stage channels and discovery, and receives community updates. | |||||
/// The guild can enable welcome screen, Membership Screening, stage channels and discovery, and receives community updates. This feature is mutable. | |||||
/// </summary> | /// </summary> | ||||
Community = 1L << 5, | Community = 1L << 5, | ||||
/// <summary> | /// <summary> | ||||
/// The guild is able to be discovered in the directory. | |||||
/// The guild is able to be discovered in the directory. This feature is mutable. | |||||
/// </summary> | /// </summary> | ||||
Discoverable = 1L << 6, | Discoverable = 1L << 6, | ||||
/// <summary> | /// <summary> | ||||
@@ -185,5 +185,13 @@ namespace Discord | |||||
/// The guild has been set as a support server on the App Directory. | /// The guild has been set as a support server on the App Directory. | ||||
/// </summary> | /// </summary> | ||||
DeveloperSupportServer = 1L << 42, | DeveloperSupportServer = 1L << 42, | ||||
/// <summary> | |||||
/// The guild has invites disabled. This feature is mutable. | |||||
/// </summary> | |||||
InvitesDisabled = 1L << 43, | |||||
/// <summary> | |||||
/// The guild has auto moderation enabled. | |||||
/// </summary> | |||||
AutoModeration = 1L << 44 | |||||
} | } | ||||
} | } |
@@ -113,5 +113,10 @@ namespace Discord | |||||
/// Gets or sets if the boost progress bar is enabled. | /// Gets or sets if the boost progress bar is enabled. | ||||
/// </summary> | /// </summary> | ||||
public Optional<bool> IsBoostProgressBarEnabled { get; set; } | public Optional<bool> IsBoostProgressBarEnabled { get; set; } | ||||
/// <summary> | |||||
/// Gets or sets the guild features enabled in this guild. Features that are not mutable will be ignored. | |||||
/// </summary> | |||||
public Optional<GuildFeature> Features { get; set; } | |||||
} | } | ||||
} | } |
@@ -37,5 +37,7 @@ namespace Discord.API.Rest | |||||
public string PreferredLocale { get; set; } | public string PreferredLocale { get; set; } | ||||
[JsonProperty("premium_progress_bar_enabled")] | [JsonProperty("premium_progress_bar_enabled")] | ||||
public Optional<bool> IsBoostProgressBarEnabled { get; set; } | public Optional<bool> IsBoostProgressBarEnabled { get; set; } | ||||
[JsonProperty("features")] | |||||
public Optional<GuildFeatures> GuildFeatures { get; set; } | |||||
} | } | ||||
} | } |
@@ -39,7 +39,8 @@ namespace Discord.Rest | |||||
VerificationLevel = args.VerificationLevel, | VerificationLevel = args.VerificationLevel, | ||||
ExplicitContentFilter = args.ExplicitContentFilter, | ExplicitContentFilter = args.ExplicitContentFilter, | ||||
SystemChannelFlags = args.SystemChannelFlags, | SystemChannelFlags = args.SystemChannelFlags, | ||||
IsBoostProgressBarEnabled = args.IsBoostProgressBarEnabled | |||||
IsBoostProgressBarEnabled = args.IsBoostProgressBarEnabled, | |||||
GuildFeatures = args.Features.IsSpecified ? new GuildFeatures(args.Features.Value, Array.Empty<string>()) : Optional.Create<GuildFeatures>(), | |||||
}; | }; | ||||
if (apiArgs.Banner.IsSpecified) | if (apiArgs.Banner.IsSpecified) | ||||
@@ -2,6 +2,7 @@ using Newtonsoft.Json; | |||||
using Newtonsoft.Json.Linq; | using Newtonsoft.Json.Linq; | ||||
using System; | using System; | ||||
using System.Collections.Generic; | using System.Collections.Generic; | ||||
using System.Text; | |||||
namespace Discord.Net.Converters | namespace Discord.Net.Converters | ||||
{ | { | ||||
@@ -36,9 +37,52 @@ namespace Discord.Net.Converters | |||||
return new GuildFeatures(features, experimental.ToArray()); | return new GuildFeatures(features, experimental.ToArray()); | ||||
} | } | ||||
public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer) | public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer) | ||||
{ | { | ||||
throw new NotImplementedException(); | |||||
var guildFeatures = (GuildFeatures)value; | |||||
var enumValues = Enum.GetValues(typeof(GuildFeature)); | |||||
writer.WriteStartArray(); | |||||
foreach (var enumValue in enumValues) | |||||
{ | |||||
var val = (GuildFeature)enumValue; | |||||
if (val is GuildFeature.None) | |||||
continue; | |||||
if (guildFeatures.Value.HasFlag(val)) | |||||
{ | |||||
writer.WriteValue(FeatureToApiString(val)); | |||||
} | |||||
} | |||||
writer.WriteEndArray(); | |||||
} | |||||
private string FeatureToApiString(GuildFeature feature) | |||||
{ | |||||
var builder = new StringBuilder(); | |||||
var firstChar = true; | |||||
foreach (var c in feature.ToString().ToCharArray()) | |||||
{ | |||||
if (char.IsUpper(c)) | |||||
{ | |||||
if (firstChar) | |||||
firstChar = false; | |||||
else | |||||
builder.Append("_"); | |||||
builder.Append(c); | |||||
} | |||||
else | |||||
{ | |||||
builder.Append(char.ToUpper(c)); | |||||
} | |||||
} | |||||
return builder.ToString(); | |||||
} | } | ||||
} | } | ||||
} | } |