コード例 #1
0
ファイル: GuildFeatures.cs プロジェクト: Neuheit/Discord.Net
        internal void EnsureFeature(GuildFeature feature)
        {
            if (!HasFeature(feature))
            {
                var vals = Enum.GetValues(typeof(GuildFeature)).Cast <GuildFeature>();

                var missingValues = vals.Where(x => feature.HasFlag(x) && !Value.HasFlag(x));

                throw new InvalidOperationException($"Missing required guild feature{(missingValues.Count() > 1 ? "s" : "")} {string.Join(", ", missingValues.Select(x => x.ToString()))} in order to execute this operation.");
            }
        }
コード例 #2
0
        public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
        {
            var obj = JToken.Load(reader);
            var arr = obj.ToObject <string[]>();

            GuildFeature  features     = GuildFeature.None;
            List <string> experimental = new();

            foreach (var item in arr)
            {
                if (Enum.TryParse <GuildFeature>(string.Concat(item.Split('_')), true, out var result))
                {
                    features |= result;
                }
                else
                {
                    experimental.Add(item);
                }
            }

            return(new GuildFeatures(features, experimental.ToArray()));
        }
コード例 #3
0
ファイル: RequireFeature.cs プロジェクト: Multivax/Skuld
 public RequireFeatureAttribute(GuildFeature feature)
 {
     Feature = feature;
 }
コード例 #4
0
ファイル: GuildFeatures.cs プロジェクト: Neuheit/Discord.Net
 public bool HasFeature(GuildFeature feature)
 => Value.HasFlag(feature);
コード例 #5
0
ファイル: GuildFeatures.cs プロジェクト: Neuheit/Discord.Net
 internal GuildFeatures(GuildFeature value, string[] experimental)
 {
     Value        = value;
     Experimental = experimental.ToImmutableArray();
 }