diff --git a/DisCatSharp.ApplicationCommands/DisCatSharp.ApplicationCommands.csproj b/DisCatSharp.ApplicationCommands/DisCatSharp.ApplicationCommands.csproj index e4525fdad..2386213f4 100644 --- a/DisCatSharp.ApplicationCommands/DisCatSharp.ApplicationCommands.csproj +++ b/DisCatSharp.ApplicationCommands/DisCatSharp.ApplicationCommands.csproj @@ -1,43 +1,43 @@ DisCatSharp.ApplicationCommands DisCatSharp.ApplicationCommands DisCatSharp.ApplicationCommands DisCatSharp Application Commands Extension Use it on top of your DisCatSharp powered bot and unleash the power of application commands in discord. Documentation: https://docs.discatsharp.tech/articles/modules/application_commands/intro.html DisCatSharp,Discord API Wrapper,Discord,Bots,Discord Bots,AITSYS,Net6,Application Commands,Context Menu Commands - + all runtime; build; native; contentfiles; analyzers; buildtransitive diff --git a/DisCatSharp.CommandsNext/DisCatSharp.CommandsNext.csproj b/DisCatSharp.CommandsNext/DisCatSharp.CommandsNext.csproj index 2d5925906..f249c3cbc 100644 --- a/DisCatSharp.CommandsNext/DisCatSharp.CommandsNext.csproj +++ b/DisCatSharp.CommandsNext/DisCatSharp.CommandsNext.csproj @@ -1,43 +1,43 @@ DisCatSharp.CommandsNext DisCatSharp.CommandsNext DisCatSharp.CommandsNext DisCatSharp Commands Next Extension Allow your users to use text commands in your bot. Note: Requires the Message Content Intent enabled for your discord application. Documentation: https://docs.discatsharp.tech/articles/modules/commandsnext/intro.html DisCatSharp,Discord API Wrapper,Discord,Bots,Discord Bots,AITSYS,Net6,Text Commands - + all runtime; build; native; contentfiles; analyzers; buildtransitive diff --git a/DisCatSharp.Common/DisCatSharp.Common.csproj b/DisCatSharp.Common/DisCatSharp.Common.csproj index 9be17bc2c..126f8b738 100644 --- a/DisCatSharp.Common/DisCatSharp.Common.csproj +++ b/DisCatSharp.Common/DisCatSharp.Common.csproj @@ -1,47 +1,47 @@ DisCatSharp.Common DisCatSharp.Common True True True Portable DisCatSharp.Common DisCatSharp Common Extension Common tools for DisCatSharp, like regexes and converters! DisCatSharp,Discord API Wrapper,Discord,Bots,Discord Bots,AITSYS,Net6,Common Tools enable False - + all runtime; build; native; contentfiles; analyzers; buildtransitive diff --git a/DisCatSharp.Configuration.Tests/DisCatSharp.Configuration.Tests.csproj b/DisCatSharp.Configuration.Tests/DisCatSharp.Configuration.Tests.csproj index 61e76592e..48787485c 100644 --- a/DisCatSharp.Configuration.Tests/DisCatSharp.Configuration.Tests.csproj +++ b/DisCatSharp.Configuration.Tests/DisCatSharp.Configuration.Tests.csproj @@ -1,58 +1,58 @@ net6.0 enable 1591;NU5128;DV2001 false false - + all runtime; build; native; contentfiles; analyzers; buildtransitive runtime; build; native; contentfiles; analyzers; buildtransitive all runtime; build; native; contentfiles; analyzers; buildtransitive all Always Always Always Always Always Always diff --git a/DisCatSharp.Configuration/DisCatSharp.Configuration.csproj b/DisCatSharp.Configuration/DisCatSharp.Configuration.csproj index 1161da9f1..b14ad4933 100644 --- a/DisCatSharp.Configuration/DisCatSharp.Configuration.csproj +++ b/DisCatSharp.Configuration/DisCatSharp.Configuration.csproj @@ -1,39 +1,39 @@ net6.0 enable DisCatSharp.Configuration DisCatSharp.Configuration True DisCatSharp.Configuration Configuration for the DisCatSharp Hosting Extension. DisCatSharp,Discord API Wrapper,Discord,Bots,Discord Bots,AITSYS,Net6,Hosting,Web,Configuration - + all runtime; build; native; contentfiles; analyzers; buildtransitive diff --git a/DisCatSharp.Experimental/DisCatSharp.Experimental.csproj b/DisCatSharp.Experimental/DisCatSharp.Experimental.csproj index e571e22c2..567c62b03 100644 --- a/DisCatSharp.Experimental/DisCatSharp.Experimental.csproj +++ b/DisCatSharp.Experimental/DisCatSharp.Experimental.csproj @@ -1,38 +1,38 @@ DisCatSharp.Experimental DisCatSharp.Experimental DisCatSharp.Experimental DisCatSharp.Experimental Experimental changes for DisCatSharp. DisCatSharp,Experimental,Discord API Wrapper,Discord,Bots,Discord Bots,AITSYS,Net6 - + all runtime; build; native; contentfiles; analyzers; buildtransitive diff --git a/DisCatSharp.Hosting.DependencyInjection/DisCatSharp.Hosting.DependencyInjection.csproj b/DisCatSharp.Hosting.DependencyInjection/DisCatSharp.Hosting.DependencyInjection.csproj index d534bc1f6..95a310f1d 100644 --- a/DisCatSharp.Hosting.DependencyInjection/DisCatSharp.Hosting.DependencyInjection.csproj +++ b/DisCatSharp.Hosting.DependencyInjection/DisCatSharp.Hosting.DependencyInjection.csproj @@ -1,34 +1,34 @@ net6.0 enable True DisCatSharp.Hosting.DependencyInjection Dependency Injection for the DisCatSharp Hosting Extension. DisCatSharp,Discord API Wrapper,Discord,Bots,Discord Bots,AITSYS,Net6,Hosting,Web,Dependency Injection - + all runtime; build; native; contentfiles; analyzers; buildtransitive diff --git a/DisCatSharp.Hosting.Tests/DisCatSharp.Hosting.Tests.csproj b/DisCatSharp.Hosting.Tests/DisCatSharp.Hosting.Tests.csproj index ffe6b8a6e..0aa2d84f9 100644 --- a/DisCatSharp.Hosting.Tests/DisCatSharp.Hosting.Tests.csproj +++ b/DisCatSharp.Hosting.Tests/DisCatSharp.Hosting.Tests.csproj @@ -1,54 +1,54 @@ net6.0 enable 1591;NU5128;DV2001 false false - + all runtime; build; native; contentfiles; analyzers; buildtransitive runtime; build; native; contentfiles; analyzers; buildtransitive all runtime; build; native; contentfiles; analyzers; buildtransitive all Always Always Always Always diff --git a/DisCatSharp.Hosting/DisCatSharp.Hosting.csproj b/DisCatSharp.Hosting/DisCatSharp.Hosting.csproj index d129adceb..8e822ddc5 100644 --- a/DisCatSharp.Hosting/DisCatSharp.Hosting.csproj +++ b/DisCatSharp.Hosting/DisCatSharp.Hosting.csproj @@ -1,36 +1,36 @@ net6.0 enable True DisCatSharp.Hosting Hosting Extension for DisCatSharp. DisCatSharp,Discord API Wrapper,Discord,Bots,Discord Bots,AITSYS,Net6,Hosting,Web - + all runtime; build; native; contentfiles; analyzers; buildtransitive diff --git a/DisCatSharp.Interactivity/DisCatSharp.Interactivity.csproj b/DisCatSharp.Interactivity/DisCatSharp.Interactivity.csproj index 36e77329c..391901d8b 100644 --- a/DisCatSharp.Interactivity/DisCatSharp.Interactivity.csproj +++ b/DisCatSharp.Interactivity/DisCatSharp.Interactivity.csproj @@ -1,42 +1,42 @@ DisCatSharp.Interactivity DisCatSharp.Interactivity DisCatSharp.Interactivity DisCatSharp Interactivity Extension Unleash the full power of discord commands. Documentation: https://docs.discatsharp.tech/articles/modules/interactivity.html DisCatSharp,Discord API Wrapper,Discord,Bots,Discord Bots,AITSYS,Net6,Pagination,Reactions,Buttons,Interactive Commands,Interactivity,Message Components - + all runtime; build; native; contentfiles; analyzers; buildtransitive diff --git a/DisCatSharp.Lavalink/DisCatSharp.Lavalink.csproj b/DisCatSharp.Lavalink/DisCatSharp.Lavalink.csproj index dde5dee76..8e46a51e7 100644 --- a/DisCatSharp.Lavalink/DisCatSharp.Lavalink.csproj +++ b/DisCatSharp.Lavalink/DisCatSharp.Lavalink.csproj @@ -1,43 +1,43 @@ DisCatSharp.Lavalink DisCatSharp.Lavalink true DisCatSharp.Lavalink DisCatSharp Lavalink Extension Extend your bot with the power of lavalink. Play your favorite music in discord! Documentation: https://docs.discatsharp.tech/articles/modules/audio/lavalink/setup.html DisCatSharp,Discord API Wrapper,Discord,Bots,Discord Bots,AITSYS,Net6,Voice,Lavalink,Audio Player,Music,YouTube,Spotify,SoundCloud - + all runtime; build; native; contentfiles; analyzers; buildtransitive diff --git a/DisCatSharp.Tools/DisCatSharp.Analyzer/DisCatSharp.Analyzer.Package/DisCatSharp.Analyzer.Package.csproj b/DisCatSharp.Tools/DisCatSharp.Analyzer/DisCatSharp.Analyzer.Package/DisCatSharp.Analyzer.Package.csproj index d464466e4..93dd67c8a 100644 --- a/DisCatSharp.Tools/DisCatSharp.Analyzer/DisCatSharp.Analyzer.Package/DisCatSharp.Analyzer.Package.csproj +++ b/DisCatSharp.Tools/DisCatSharp.Analyzer/DisCatSharp.Analyzer.Package/DisCatSharp.Analyzer.Package.csproj @@ -1,91 +1,91 @@ netstandard2.0 false true true DisCatSharp.Analyzer.Roselyn - 5.1.0 - 5.1.0 + 5.2.0 + 5.2.0 AITSYS false DisCatSharp Analyzer Various DisCatSharp Analyzers. Copyright 2022 AITSYS Analyzer, analyzers true true $(TargetsForTfmSpecificContentInPackage);AddNuGetDlls;_AddAnalyzersToOutput false DisCatSharp Analyzer logobig.png README.md git https://github.com/Aiko-IT-Systems/DisCatSharp https://github.com/Aiko-IT-Systems/DisCatSharp True \ True \ true true <_PackagesToPack Remove="@(_PackagesToPack)" Condition="%(NuGetPackageId) == 'NETStandard.Library'" /> <_PackagesToPack Remove="@(_PackagesToPack)" Condition="%(NuGetPackageId) == 'Microsoft.CodeAnalysis.CSharp.Workspaces'" /> diff --git a/DisCatSharp.Tools/DisCatSharp.Analyzer/DisCatSharp.Analyzer/AttributeAnalyzer.cs b/DisCatSharp.Tools/DisCatSharp.Analyzer/DisCatSharp.Analyzer/AttributeAnalyzer.cs index 962e9ec90..535875a58 100644 --- a/DisCatSharp.Tools/DisCatSharp.Analyzer/DisCatSharp.Analyzer/AttributeAnalyzer.cs +++ b/DisCatSharp.Tools/DisCatSharp.Analyzer/DisCatSharp.Analyzer/AttributeAnalyzer.cs @@ -1,206 +1,206 @@ // This file is part of the DisCatSharp project, based off DSharpPlus. // // Copyright (c) 2021-2022 AITSYS // // Permission is hereby granted, free of charge, to any person obtaining a copy // of this software and associated documentation files (the "Software"), to deal // in the Software without restriction, including without limitation the rights // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell // copies of the Software, and to permit persons to whom the Software is // furnished to do so, subject to the following conditions: // // The above copyright notice and this permission notice shall be included in all // copies or substantial portions of the Software. // // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE // SOFTWARE. using DisCatSharp.Attributes; using Microsoft.CodeAnalysis; using Microsoft.CodeAnalysis.CSharp; using Microsoft.CodeAnalysis.Diagnostics; using System; using System.Collections.Immutable; using System.Linq; namespace DisCatSharp.Analyzer { [DiagnosticAnalyzer(LanguageNames.CSharp)] public class AttributeAnalyzer : DiagnosticAnalyzer { public const string DiagnosticIdPrefix = "DCS"; public const string Category = "Information"; private static readonly LocalizableString TitleExperimental = new LocalizableResourceString(nameof(Resources.AnalyzerTitleExperimental), Resources.ResourceManager, typeof(Resources)); private static readonly LocalizableString MessageFormatExperimental = new LocalizableResourceString(nameof(Resources.AnalyzerMessageFormatExperimental), Resources.ResourceManager, typeof(Resources)); private static readonly LocalizableString DescriptionExperimental = new LocalizableResourceString(nameof(Resources.AnalyzerDescriptionExperimental), Resources.ResourceManager, typeof(Resources)); private static readonly LocalizableString TitleDiscordInExperiment = new LocalizableResourceString(nameof(Resources.AnalyzerTitleDiscordInExperiment), Resources.ResourceManager, typeof(Resources)); private static readonly LocalizableString MessageFormatDiscordInExperiment = new LocalizableResourceString(nameof(Resources.AnalyzerMessageFormatDiscordInExperiment), Resources.ResourceManager, typeof(Resources)); private static readonly LocalizableString DescriptionDiscordInExperiment = new LocalizableResourceString(nameof(Resources.AnalyzerDescriptionDiscordInExperiment), Resources.ResourceManager, typeof(Resources)); private static readonly LocalizableString TitleDiscordDeprecated = new LocalizableResourceString(nameof(Resources.AnalyzerTitleDiscordDeprecated), Resources.ResourceManager, typeof(Resources)); - private static readonly LocalizableString MessageFormatDiscordDeprecated = new LocalizableResourceString(nameof(Resources.AnalyzerDescriptionDiscordDeprecated), Resources.ResourceManager, typeof(Resources)); + private static readonly LocalizableString MessageFormatDiscordDeprecated = new LocalizableResourceString(nameof(Resources.AnalyzerMessageFormatDiscordDeprecated), Resources.ResourceManager, typeof(Resources)); private static readonly LocalizableString DescriptionDiscordDeprecated = new LocalizableResourceString(nameof(Resources.AnalyzerDescriptionDiscordDeprecated), Resources.ResourceManager, typeof(Resources)); private static readonly LocalizableString TitleDiscordUnreleased = new LocalizableResourceString(nameof(Resources.AnalyzerTitleDiscordUnreleased), Resources.ResourceManager, typeof(Resources)); - private static readonly LocalizableString MessageFormatDiscordUnreleased = new LocalizableResourceString(nameof(Resources.AnalyzerDescriptionDiscordUnreleased), Resources.ResourceManager, typeof(Resources)); + private static readonly LocalizableString MessageFormatDiscordUnreleased = new LocalizableResourceString(nameof(Resources.AnalyzerMessageFormatDiscordUnreleased), Resources.ResourceManager, typeof(Resources)); private static readonly LocalizableString DescriptionDiscordUnreleased = new LocalizableResourceString(nameof(Resources.AnalyzerDescriptionDiscordUnreleased), Resources.ResourceManager, typeof(Resources)); private static readonly DiagnosticDescriptor ExperimentalRule = new DiagnosticDescriptor(DiagnosticIdPrefix + "0001", TitleExperimental, MessageFormatExperimental, Category, DiagnosticSeverity.Warning, true, DescriptionExperimental, "https://docs.discatsharp.tech/vs/analyzer/dcs/0001.html"); private static readonly DiagnosticDescriptor DiscordInExperimentRule = new DiagnosticDescriptor(DiagnosticIdPrefix + "0101", TitleDiscordInExperiment, MessageFormatDiscordInExperiment, Category, DiagnosticSeverity.Warning, true, DescriptionDiscordInExperiment, "https://docs.discatsharp.tech/vs/analyzer/dcs/0101.html"); private static readonly DiagnosticDescriptor DiscordDeprecatedRule = new DiagnosticDescriptor(DiagnosticIdPrefix + "0102", TitleDiscordDeprecated, MessageFormatDiscordDeprecated, Category, DiagnosticSeverity.Warning, true, DescriptionDiscordDeprecated, "https://docs.discatsharp.tech/vs/analyzer/dcs/0102.html"); private static readonly DiagnosticDescriptor DiscordUnreleasedRule = new DiagnosticDescriptor(DiagnosticIdPrefix + "0103", TitleDiscordUnreleased, MessageFormatDiscordUnreleased, Category, DiagnosticSeverity.Warning, true, DescriptionDiscordUnreleased, "https://docs.discatsharp.tech/vs/analyzer/dcs/0103.html"); public override ImmutableArray SupportedDiagnostics { get { return ImmutableArray.Create(ExperimentalRule, DiscordInExperimentRule, DiscordDeprecatedRule, DiscordUnreleasedRule); } } public override void Initialize(AnalysisContext context) { context.ConfigureGeneratedCodeAnalysis(GeneratedCodeAnalysisFlags.None); context.EnableConcurrentExecution(); context.RegisterSymbolAction(ExperimentalAnalyzer, SymbolKind.Parameter); context.RegisterSymbolAction(ExperimentalAnalyzer, SymbolKind.Property); context.RegisterSymbolAction(ExperimentalAnalyzer, SymbolKind.NamedType); context.RegisterSymbolAction(ExperimentalAnalyzer, SymbolKind.Method); context.RegisterSymbolAction(ExperimentalAnalyzer, SymbolKind.Field); context.RegisterSymbolAction(ExperimentalAnalyzer, SymbolKind.Event); context.RegisterSyntaxNodeAction(StatusAnalyzer, SyntaxKind.InvocationExpression); context.RegisterSyntaxNodeAction(StatusAnalyzer, SyntaxKind.ObjectCreationExpression); context.RegisterSyntaxNodeAction(StatusAnalyzer, SyntaxKind.FieldDeclaration); // Don't work context.RegisterSyntaxNodeAction(StatusAnalyzer, SyntaxKind.PropertyDeclaration); // Don't work, one of the not working ones should create a report if a property is used. I.e.: /* var test = new Test("test"); test.Invoke(); var str = test.TestString; <- Fire here for TestString */ } private static void StatusAnalyzer(SyntaxNodeAnalysisContext context) { var invocation = context.Node; var declaration = context.SemanticModel.GetSymbolInfo(invocation, context.CancellationToken).Symbol; if (null == declaration) { Console.WriteLine("Faulty"); return; } var attributes = declaration.GetAttributes(); var name = declaration.Name; var kind = declaration.Kind.ToString(); if (name == ".ctor") { name = declaration.ToDisplayString(SymbolDisplayFormat.FullyQualifiedFormat); kind = "Constructor"; } var experimentalAttributeData = attributes.FirstOrDefault(attr => IsRequiredAttribute(context.SemanticModel, attr, typeof(ExperimentalAttribute))); var discordInExperimentAttributeData = attributes.FirstOrDefault(attr => IsRequiredAttribute(context.SemanticModel, attr, typeof(DiscordInExperimentAttribute))); var discordDeprecatedAttributeData = attributes.FirstOrDefault(attr => IsRequiredAttribute(context.SemanticModel, attr, typeof(DiscordDeprecatedAttribute))); var discordUnreleasedAttributeData = attributes.FirstOrDefault(attr => IsRequiredAttribute(context.SemanticModel, attr, typeof(DiscordUnreleasedAttribute))); if (experimentalAttributeData != null) { var message = GetMessage(experimentalAttributeData); context.ReportDiagnostic(Diagnostic.Create(ExperimentalRule, invocation.GetLocation(), kind, name, message)); } if (discordInExperimentAttributeData != null) { var message = GetMessage(discordInExperimentAttributeData); context.ReportDiagnostic(Diagnostic.Create(DiscordInExperimentRule, invocation.GetLocation(), kind, name, message)); } if (discordDeprecatedAttributeData != null) { var message = GetMessage(discordDeprecatedAttributeData); context.ReportDiagnostic(Diagnostic.Create(DiscordDeprecatedRule, invocation.GetLocation(), kind, name, message)); } if (discordUnreleasedAttributeData != null) { var message = GetMessage(discordUnreleasedAttributeData); context.ReportDiagnostic(Diagnostic.Create(DiscordUnreleasedRule, invocation.GetLocation(), kind, name, message)); } return; } private static void ExperimentalAnalyzer(SymbolAnalysisContext context) { Console.WriteLine("Handling " + context.Symbol.Kind.ToString()); var syntaxTrees = from x in context.Symbol.Locations where x.IsInSource select x.SourceTree; var declaration = context.Symbol; if (null == declaration) { Console.WriteLine("Faulty"); return; } var attributes = declaration.GetAttributes(); var name = declaration.Name; var kind = declaration.Kind.ToString(); if (name == ".ctor") { name = declaration.ToDisplayString(SymbolDisplayFormat.FullyQualifiedFormat); kind = "Constructor"; } else if (kind == "NamedType") { kind = "Class"; } var experimentalAttributeData = attributes.FirstOrDefault(attr => IsRequiredAttribute(context.Compilation.GetSemanticModel(syntaxTrees.First()), attr, typeof(ExperimentalAttribute))); var discordInExperimentAttributeData = attributes.FirstOrDefault(attr => IsRequiredAttribute(context.Compilation.GetSemanticModel(syntaxTrees.First()), attr, typeof(DiscordInExperimentAttribute))); var discordDeprecatedAttributeData = attributes.FirstOrDefault(attr => IsRequiredAttribute(context.Compilation.GetSemanticModel(syntaxTrees.First()), attr, typeof(DiscordDeprecatedAttribute))); var discordUnreleasedAttributeData = attributes.FirstOrDefault(attr => IsRequiredAttribute(context.Compilation.GetSemanticModel(syntaxTrees.First()), attr, typeof(DiscordUnreleasedAttribute))); if (experimentalAttributeData != null) { var message = GetMessage(experimentalAttributeData); context.ReportDiagnostic(Diagnostic.Create(ExperimentalRule, context.Symbol.Locations.First(x => x.IsInSource), kind, name, message)); } if (discordInExperimentAttributeData != null) { var message = GetMessage(discordInExperimentAttributeData); context.ReportDiagnostic(Diagnostic.Create(DiscordInExperimentRule, context.Symbol.Locations.First(x => x.IsInSource), kind, name, message)); } if (discordDeprecatedAttributeData != null) { var message = GetMessage(discordDeprecatedAttributeData); context.ReportDiagnostic(Diagnostic.Create(DiscordDeprecatedRule, context.Symbol.Locations.First(x => x.IsInSource), kind, name, message)); } if (discordUnreleasedAttributeData != null) { var message = GetMessage(discordUnreleasedAttributeData); context.ReportDiagnostic(Diagnostic.Create(DiscordUnreleasedRule, context.Symbol.Locations.First(x => x.IsInSource), kind, name, message)); } return; } static bool IsRequiredAttribute(SemanticModel semanticModel, AttributeData attribute, Type desiredAttributeType) { var desiredTypeNamedSymbol = semanticModel.Compilation.GetTypeByMetadataName(desiredAttributeType.FullName); var result = attribute.AttributeClass.Equals(desiredTypeNamedSymbol, SymbolEqualityComparer.Default); return result; } static string GetMessage(AttributeData attribute) { if (attribute.ConstructorArguments.Length < 1) { return "Do not use in production."; } return attribute.ConstructorArguments[0].Value as string; } } } diff --git a/DisCatSharp.VoiceNext.Natives/DisCatSharp.VoiceNext.Natives.csproj b/DisCatSharp.VoiceNext.Natives/DisCatSharp.VoiceNext.Natives.csproj index 66b5dcc1c..965cea01f 100644 --- a/DisCatSharp.VoiceNext.Natives/DisCatSharp.VoiceNext.Natives.csproj +++ b/DisCatSharp.VoiceNext.Natives/DisCatSharp.VoiceNext.Natives.csproj @@ -1,45 +1,45 @@ net6.0 false win-x86;win-x64 true false symbols.nupkg DisCatSharp.VoiceNext.Natives Natives for DisCatSharp Voice Next Extension Manual Download: https://docs.discatsharp.tech/natives/index.html DisCatSharp,Discord API Wrapper,Discord,Bots,Discord Bots,AITSYS,Net6,Voice,Audio Player true runtimes - + all runtime; build; native; contentfiles; analyzers; buildtransitive diff --git a/DisCatSharp.VoiceNext/DisCatSharp.VoiceNext.csproj b/DisCatSharp.VoiceNext/DisCatSharp.VoiceNext.csproj index fe69e0293..895df484a 100644 --- a/DisCatSharp.VoiceNext/DisCatSharp.VoiceNext.csproj +++ b/DisCatSharp.VoiceNext/DisCatSharp.VoiceNext.csproj @@ -1,47 +1,47 @@ DisCatSharp.VoiceNext DisCatSharp.VoiceNext true DisCatSharp.VoiceNext DisCatSharp Voice Next Extension Easy made audio player for discord bots. Documentation: https://docs.discatsharp.tech/articles/modules/audio/voicenext/prerequisites.html DisCatSharp,Discord API Wrapper,Discord,Bots,Discord Bots,AITSYS,Net6,Voice,Audio Player - + all runtime; build; native; contentfiles; analyzers; buildtransitive diff --git a/DisCatSharp/DisCatSharp.csproj b/DisCatSharp/DisCatSharp.csproj index dd36a60a1..68287a166 100644 --- a/DisCatSharp/DisCatSharp.csproj +++ b/DisCatSharp/DisCatSharp.csproj @@ -1,69 +1,69 @@ DisCatSharp DisCatSharp DisCatSharp DisCatSharp Your library to write discord bots in C# with a focus on always providing access to the latest discord features. Written with love and for everyone. DisCatSharp,Discord API Wrapper,Discord,Bots,Discord Bots,AITSYS,Net6 - + all runtime; build; native; contentfiles; analyzers; buildtransitive True True Resources.resx ResXFileCodeGenerator Resources.Designer.cs diff --git a/DisCatSharp/Entities/Guild/DiscordGuild.Features.cs b/DisCatSharp/Entities/Guild/DiscordGuild.Features.cs index 1e100a8cd..098028170 100644 --- a/DisCatSharp/Entities/Guild/DiscordGuild.Features.cs +++ b/DisCatSharp/Entities/Guild/DiscordGuild.Features.cs @@ -1,672 +1,672 @@ // This file is part of the DisCatSharp project, based off DSharpPlus. // // Copyright (c) 2021-2022 AITSYS // // Permission is hereby granted, free of charge, to any person obtaining a copy // of this software and associated documentation files (the "Software"), to deal // in the Software without restriction, including without limitation the rights // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell // copies of the Software, and to permit persons to whom the Software is // furnished to do so, subject to the following conditions: // // The above copyright notice and this permission notice shall be included in all // copies or substantial portions of the Software. // // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE // SOFTWARE. using System; using System.Collections.Generic; using System.Linq; using System.Text; using DisCatSharp.Attributes; using DisCatSharp.Enums; namespace DisCatSharp.Entities; /// /// Represents the guild features. /// public class GuildFeatures { /// /// List of all guild features. /// public List Features { get; } /// /// Checks the guild features and constructs a new object. /// /// Guild to check public GuildFeatures(DiscordGuild guild) { this.Features = new List(); if (guild.RawFeatures.Contains("APPLICATION_COMMAND_PERMISSIONS_V2")) this.Features.Add(GuildFeaturesEnum.UsesApplicationCommandsPermissionsV2); if (guild.RawFeatures.Contains("RAID_ALERTS_ENABLED")) this.Features.Add(GuildFeaturesEnum.RaidAlertsEnabled); if (guild.RawFeatures.Contains("CREATOR_MONETIZABLE_RESTRICTED")) this.Features.Add(GuildFeaturesEnum.CreatorMonetizableRestricted); if (guild.RawFeatures.Contains("VOICE_IN_THREADS")) this.Features.Add(GuildFeaturesEnum.VoiceInThreadsEnabled); if (guild.RawFeatures.Contains("CHANNEL_HIGHLIGHTS_DISABLED")) this.Features.Add(GuildFeaturesEnum.ChannelHighlightsDisabled); if (guild.RawFeatures.Contains("CHANNEL_HIGHLIGHTS")) this.Features.Add(GuildFeaturesEnum.ChannelHighlights); if (guild.RawFeatures.Contains("GUILD_ONBOARDING_EVER_ENABLED")) this.Features.Add(GuildFeaturesEnum.HadGuildOnBoardingEverEnabled); if (guild.RawFeatures.Contains("BURST_REACTIONS")) this.Features.Add(GuildFeaturesEnum.CanUseBurstReactions); if (guild.RawFeatures.Contains("CREATOR_STORE_PAGE")) this.Features.Add(GuildFeaturesEnum.CanUseCreatorStorePage); if (guild.RawFeatures.Contains("ANIMATED_ICON")) this.Features.Add(GuildFeaturesEnum.CanSetAnimatedIcon); if (guild.RawFeatures.Contains("ANIMATED_BANNER")) this.Features.Add(GuildFeaturesEnum.CanSetAnimatedBanner); if (guild.RawFeatures.Contains("BANNER")) this.Features.Add(GuildFeaturesEnum.CanSetBanner); if (guild.RawFeatures.Contains("COMMUNITY")) this.Features.Add(GuildFeaturesEnum.HasCommunityEnabled); if (!guild.RawFeatures.Contains("DISCOVERABLE_DISABLED") && guild.RawFeatures.Contains("DISCOVERABLE")) this.Features.Add(GuildFeaturesEnum.IsDiscoverable); if (guild.RawFeatures.Contains("FEATUREABLE")) this.Features.Add(GuildFeaturesEnum.IsFeatureable); if (guild.RawFeatures.Contains("INVITE_SPLASH")) this.Features.Add(GuildFeaturesEnum.CanSetInviteSplash); if (guild.RawFeatures.Contains("MEMBER_VERIFICATION_GATE_ENABLED")) this.Features.Add(GuildFeaturesEnum.HasMembershipScreeningEnabled); if (guild.RawFeatures.Contains("NEWS")) this.Features.Add(GuildFeaturesEnum.CanCreateNewsChannels); if (guild.RawFeatures.Contains("PARTNERED")) this.Features.Add(GuildFeaturesEnum.IsPartnered); if (guild.RawFeatures.Contains("MORE_EMOJI")) this.Features.Add(GuildFeaturesEnum.CanUploadMoreEmojis); if (guild.RawFeatures.Contains("PREVIEW_ENABLED")) this.Features.Add(GuildFeaturesEnum.HasPreviewEnabled); if (guild.RawFeatures.Contains("VANITY_URL")) this.Features.Add(GuildFeaturesEnum.CanSetVanityUrl); if (guild.RawFeatures.Contains("VERIFIED")) this.Features.Add(GuildFeaturesEnum.IsVerified); if (guild.RawFeatures.Contains("VIP_REGIONS")) this.Features.Add(GuildFeaturesEnum.CanAccessVipRegions); if (guild.RawFeatures.Contains("WELCOME_SCREEN_ENABLED")) this.Features.Add(GuildFeaturesEnum.HasWelcomeScreenEnabled); if (guild.RawFeatures.Contains("TICKETED_EVENTS_ENABLED")) this.Features.Add(GuildFeaturesEnum.HasTicketedEventsEnabled); if (guild.RawFeatures.Contains("MONETIZATION_ENABLED")) this.Features.Add(GuildFeaturesEnum.HasMonetizationEnabled); if (guild.RawFeatures.Contains("MORE_STICKERS")) this.Features.Add(GuildFeaturesEnum.CanUploadMoreStickers); if (guild.RawFeatures.Contains("HUB")) this.Features.Add(GuildFeaturesEnum.IsHub); if (guild.RawFeatures.Contains("THREADS_ENABLED_TESTING")) this.Features.Add(GuildFeaturesEnum.HasThreadTestingEnabled); if (guild.RawFeatures.Contains("THREADS_ENABLED")) this.Features.Add(GuildFeaturesEnum.HasThreadsEnabled); if (guild.RawFeatures.Contains("ROLE_ICONS")) this.Features.Add(GuildFeaturesEnum.CanSetRoleIcons); if (guild.RawFeatures.Contains("NEW_THREAD_PERMISSIONS")) this.Features.Add(GuildFeaturesEnum.HasNewThreadPermissions); if (guild.RawFeatures.Contains("ROLE_SUBSCRIPTIONS_ENABLED")) this.Features.Add(GuildFeaturesEnum.HasRoleSubscriptionsEnabled); if (guild.RawFeatures.Contains("PREMIUM_TIER_3_OVERRIDE")) this.Features.Add(GuildFeaturesEnum.PremiumTierThreeOverride); if (guild.RawFeatures.Contains("THREAD_DEFAULT_AUTO_ARCHIVE_DURATION")) this.Features.Add(GuildFeaturesEnum.CanSetThreadDefaultAutoArchiveDuration); if (guild.RawFeatures.Contains("TEXT_IN_VOICE_ENABLED")) this.Features.Add(GuildFeaturesEnum.TextInVoiceEnabled); if (guild.RawFeatures.Contains("HAS_DIRECTORY_ENTRY")) this.Features.Add(GuildFeaturesEnum.HasDirectoryEntry); if (guild.RawFeatures.Contains("LINKED_TO_HUB")) this.Features.Add(GuildFeaturesEnum.IsLinkedToHub); if (guild.RawFeatures.Contains("MEMBER_PROFILES")) this.Features.Add(GuildFeaturesEnum.HasMemberProfiles); if (guild.RawFeatures.Contains("INTERNAL_EMPLOYEE_ONLY")) this.Features.Add(GuildFeaturesEnum.IsStaffOnly); if (guild.RawFeatures.Contains("ROLE_SUBSCRIPTIONS_AVAILABLE_FOR_PURCHASE")) this.Features.Add(GuildFeaturesEnum.RoleSubscriptionsIsAvailableForPurchase); if (guild.RawFeatures.Contains("AUTO_MODERATION")) this.Features.Add(GuildFeaturesEnum.CanSetupAutoModeration); if (guild.RawFeatures.Contains("GUILD_HOME_TEST")) this.Features.Add(GuildFeaturesEnum.GuildHomeTest); if (guild.RawFeatures.Contains("INVITES_DISABLED")) this.Features.Add(GuildFeaturesEnum.InvitesDisabled); if (guild.RawFeatures.Contains("ACTIVITIES_ALPHA")) this.Features.Add(GuildFeaturesEnum.ActivitiesAlpha); if (guild.RawFeatures.Contains("ACTIVITIES_EMPLOYEE")) this.Features.Add(GuildFeaturesEnum.ActivitiesEmployee); if (guild.RawFeatures.Contains("ACTIVITIES_INTERNAL_DEV")) this.Features.Add(GuildFeaturesEnum.ActivitiesInternalDev); if (guild.RawFeatures.Contains("AUTOMOD_TRIGGER_KEYWORD_FILTER")) this.Features.Add(GuildFeaturesEnum.AutomodTriggerKeywordFilter); if (guild.RawFeatures.Contains("AUTOMOD_TRIGGER_ML_SPAM_FILTER")) this.Features.Add(GuildFeaturesEnum.AutomodTriggerMlSpamFilter); if (guild.RawFeatures.Contains("AUTOMOD_TRIGGER_SPAM_LINK_FILTERGuild")) this.Features.Add(GuildFeaturesEnum.AutomodTriggerSpamLinkFilterGuild); if (guild.RawFeatures.Contains("AUTOMOD_DEFAULT_LIST")) this.Features.Add(GuildFeaturesEnum.AutomodDefaultList); if (guild.RawFeatures.Contains("BFG")) this.Features.Add(GuildFeaturesEnum.Bfg); if (guild.RawFeatures.Contains("BOOSTING_TIERS_EXPERIMENT_MEDIUM_GUILD")) this.Features.Add(GuildFeaturesEnum.BoostingTiersExperimentMediumGuild); if (guild.RawFeatures.Contains("BOOSTING_TIERS_EXPERIMENT_SMALL_GUILD")) this.Features.Add(GuildFeaturesEnum.BoostingTiersExperimentSmallGuild); if (guild.RawFeatures.Contains("BOT_DEVELOPER_EARLY_ACCESS")) this.Features.Add(GuildFeaturesEnum.BotDeveloperEarlyAccess); if (guild.RawFeatures.Contains("CREATOR_MONETIZABLE")) this.Features.Add(GuildFeaturesEnum.CreatorMonetizable); if (guild.RawFeatures.Contains("CREATOR_MONETIZABLE_DISABLED")) this.Features.Add(GuildFeaturesEnum.CreatorMonetizableDisabled); if (guild.RawFeatures.Contains("CREATOR_MONETIZABLE_PROVISIONAL")) this.Features.Add(GuildFeaturesEnum.CreatorMonetizableProvisional); if (guild.RawFeatures.Contains("CREATOR_MONETIZABLE_WHITEGLOVE")) this.Features.Add(GuildFeaturesEnum.CreatorMonetizableWhiteGlove); if (guild.RawFeatures.Contains("CREATOR_MONETIZATION_APPLICATION_ALLOWLIST")) this.Features.Add(GuildFeaturesEnum.CreatorMonetizationApplicationAllowlist); if (guild.RawFeatures.Contains("DEVELOPER_SUPPORT_SERVER")) this.Features.Add(GuildFeaturesEnum.DeveloperSupportServer); if (guild.RawFeatures.Contains("EXPOSED_TO_ACTIVITIES_WTP_EXPERIMENT")) this.Features.Add(GuildFeaturesEnum.ExposedToActivitiesWtpExperiment); if (guild.RawFeatures.Contains("GUILD_COMMUNICATION_DISABLED_GUILDS")) this.Features.Add(GuildFeaturesEnum.GuildCommunicationDisabledGuilds); if (guild.RawFeatures.Contains("DISABLE_GUILD_COMMUNICATION")) this.Features.Add(GuildFeaturesEnum.DisableGuildCommunication); if (guild.RawFeatures.Contains("GUILD_HOME_OVERRIDE")) this.Features.Add(GuildFeaturesEnum.GuildHomeOverride); if (guild.RawFeatures.Contains("GUILD_AUTOMOD_DEFAULT_LIST")) this.Features.Add(GuildFeaturesEnum.GuildAutomodDefaultList); if (guild.RawFeatures.Contains("GUILD_MEMBER_VERIFICATION_EXPERIMENT")) this.Features.Add(GuildFeaturesEnum.GuildMemberVerificationExperiment); if (guild.RawFeatures.Contains("GUILD_ROLE_SUBSCRIPTION_PURCHASE_FEEDBACK_LOOP")) this.Features.Add(GuildFeaturesEnum.GuildRoleSubscriptionPurchaseFeedbackLoop); if (guild.RawFeatures.Contains("GUILD_ROLE_SUBSCRIPTION_TRIALS")) this.Features.Add(GuildFeaturesEnum.GuildRoleSubscriptionTrials); if (guild.RawFeatures.Contains("HAD_EARLY_ACTIVITIES_ACCESS")) this.Features.Add(GuildFeaturesEnum.HadEarlyActivitiesAccess); if (guild.RawFeatures.Contains("INCREASED_THREAD_LIMIT")) this.Features.Add(GuildFeaturesEnum.IncreasedThreadLimit); if (guild.RawFeatures.Contains("MOBILE_WEB_ROLE_SUBSCRIPTION_PURCHASE_PAGE")) this.Features.Add(GuildFeaturesEnum.MobileWebRoleSubscriptionPurchasePage); if (guild.RawFeatures.Contains("RELAY_ENABLED")) this.Features.Add(GuildFeaturesEnum.RelayEnabled); if (guild.RawFeatures.Contains("RESTRICT_SPAM_RISK_GUILDS")) this.Features.Add(GuildFeaturesEnum.RestrictSpamRiskGuilds); if (guild.RawFeatures.Contains("ROLE_SUBSCRIPTIONS_AVAILABLE_FOR_PURCHASE")) this.Features.Add(GuildFeaturesEnum.RoleSubscriptionsAvailableForPurchase); if (guild.RawFeatures.Contains("THREADS_ENABLED_TESTING")) this.Features.Add(GuildFeaturesEnum.ThreadsEnabledTesting); if (guild.RawFeatures.Contains("VOICE_CHANNEL_EFFECTS")) this.Features.Add(GuildFeaturesEnum.VoiceChannelEffects); if (guild.RawFeatures.Contains("SOUNDBOARD")) this.Features.Add(GuildFeaturesEnum.Soundboard); if (guild.RawFeatures.Contains("COMMERCE")) this.Features.Add(GuildFeaturesEnum.Commerce); if (guild.RawFeatures.Contains("EXPOSED_TO_BOOSTING_TIERS_EXPERIMENT")) this.Features.Add(GuildFeaturesEnum.ExposedToBoostingTiersExperiment); if (guild.RawFeatures.Contains("PUBLIC_DISABLED")) this.Features.Add(GuildFeaturesEnum.PublicDisabled); if (guild.RawFeatures.Contains("PUBLIC")) this.Features.Add(GuildFeaturesEnum.Public); if (guild.RawFeatures.Contains("SEVEN_DAY_THREAD_ARCHIVE")) this.Features.Add(GuildFeaturesEnum.SevenDayThreadArchive); if (guild.RawFeatures.Contains("THREE_DAY_THREAD_ARCHIVE")) this.Features.Add(GuildFeaturesEnum.ThreeDayThreadArchive); if (guild.RawFeatures.Contains("FEATURABLE")) this.Features.Add(GuildFeaturesEnum.Featurable); if (guild.RawFeatures.Contains("FORCE_RELAY")) this.Features.Add(GuildFeaturesEnum.ForceRelay); if (guild.RawFeatures.Contains("LURKABLE")) this.Features.Add(GuildFeaturesEnum.Lurkable); if (guild.RawFeatures.Contains("MEMBER_LIST_DISABLED")) this.Features.Add(GuildFeaturesEnum.MemberListDisabled); if (guild.RawFeatures.Contains("CHANNEL_BANNER")) this.Features.Add(GuildFeaturesEnum.CanSetChannelBanner); if (guild.RawFeatures.Contains("PRIVATE_THREADS")) this.Features.Add(GuildFeaturesEnum.CanCreatePrivateThreads); } /// /// Checks whether the guild has a feature enabled. /// /// The feature you'd like to check for. /// Whether the guild has the requested feature. public bool HasFeature(GuildFeaturesEnum flag) => this.Features.Contains(flag); public string ToString(string separator, bool humanReadable) { if (!humanReadable) return string.Join(separator, this.Features); else { var humanReadableFeatures = this.Features.Select(x => AddSpacesToWord(x.ToString())); return string.Join(separator, humanReadableFeatures); } } /// /// Converts a string of characters (here: enum) into a string of characters separated by spaces after a capital letter. /// /// String of text to convert /// String separated by a space after every capital letter. private static string AddSpacesToWord(string text) { if (string.IsNullOrWhiteSpace(text)) return ""; var newText = new StringBuilder(text.Length * 2); newText.Append(text[0]); for (int i = 1; i < text.Length; i++) { if (char.IsUpper(text[i]) && text[i - 1] != ' ') newText.Append(' '); newText.Append(text[i]); } return newText.ToString(); } } /// /// Represents the guild features. /// public enum GuildFeaturesEnum { /// /// Guild has access to set an animated guild icon. /// CanSetAnimatedIcon, /// /// Guild has access to set a guild banner image. /// CanSetBanner, /// /// Guild has access to use commerce features (i.e. create store channels) /// [Obsolete("Store applications are EOL.")] CanCreateStoreChannels, /// /// Guild can enable Welcome Screen, Membership Screening, Stage Channels, News Channels and receives community updates. /// Furthermore the guild can apply as a partner and for the discovery (if the prerequisites are given). /// and is usable. /// HasCommunityEnabled, /// /// Guild is able to be discovered in the discovery. /// IsDiscoverable, /// /// Guild is able to be featured in the discovery. /// IsFeatureable, /// /// Guild has access to set an invite splash background. /// CanSetInviteSplash, /// /// Guild has enabled Membership Screening. /// HasMembershipScreeningEnabled, /// /// Guild has access to create news channels. /// is usable. /// CanCreateNewsChannels, /// /// Guild is partnered. /// IsPartnered, /// /// Guild has increased custom emoji slots. /// CanUploadMoreEmojis, /// /// Guild can be previewed before joining via Membership Screening or the discovery. /// HasPreviewEnabled, /// /// Guild has access to set a vanity URL. /// CanSetVanityUrl, /// /// Guild is verified. /// IsVerified, /// /// Guild has access to set 384kbps bitrate in voice (previously VIP voice servers). /// CanAccessVipRegions, /// /// Guild has enabled the welcome screen. /// HasWelcomeScreenEnabled, /// /// Guild has enabled ticketed events. /// HasTicketedEventsEnabled, /// /// Guild has enabled monetization. /// HasMonetizationEnabled, /// /// Guild has increased custom sticker slots. /// CanUploadMoreStickers, /// /// Guild has access to the three day archive time for threads. /// Needs Premium Tier 1 (). /// [DiscordDeprecated("Auto archive duration isn't locked to boosts anymore."), Obsolete] CanSetThreadArchiveDurationThreeDays, /// /// Guild has access to the seven day archive time for threads. /// Needs Premium Tier 2 (). /// [DiscordDeprecated("Auto archive duration isn't locked to boosts anymore."), Obsolete] CanSetThreadArchiveDurationSevenDays, /// /// Guild has access to create private threads. /// Needs Premium Tier 2 (). /// [DiscordDeprecated("Private threads aren't bound to the server boost level anymore and can be used by everyone."), Obsolete] CanCreatePrivateThreads, /// /// Guild is a hub. /// is usable. /// IsHub, /// /// Guild is in a hub. /// https://github.com/discord/discord-api-docs/pull/3757/commits/4932d92c9d0c783861bc715bf7ebbabb15114e34 /// HasDirectoryEntry, /// /// Guild is linked to a hub. /// IsLinkedToHub, /// /// Guild has full access to threads. /// Old Feature. /// HasThreadTestingEnabled, /// /// Guild has access to threads. /// HasThreadsEnabled, /// /// Guild can set role icons. /// CanSetRoleIcons, /// /// Guild has the new thread permissions. /// Old Feature. /// HasNewThreadPermissions, /// /// Guild can set thread default auto archive duration. /// Old Feature. /// CanSetThreadDefaultAutoArchiveDuration, /// /// Guild has enabled role subscriptions. /// HasRoleSubscriptionsEnabled, /// /// Guild role subscriptions as purchaseable. /// RoleSubscriptionsIsAvailableForPurchase, /// /// Guild has premium tier 3 override. /// PremiumTierThreeOverride, /// /// Guild has access to text in voice. /// Restricted to . /// TextInVoiceEnabled, /// /// Guild can set an animated banner. /// Needs Premium Tier 3 (). /// CanSetAnimatedBanner, /// /// Guild can set an animated banner. /// Needs Premium Tier 3 (). /// [DiscordDeprecated("Feature was removed"), Obsolete] CanSetChannelBanner, /// /// Allows members to customize their avatar, banner and bio for that server. /// HasMemberProfiles, /// /// Guild is restricted to users with the badge. /// IsStaffOnly, /// /// Guild can use and setup the experimental auto moderation feature. /// CanSetupAutoModeration, /// /// Guild has access to home. /// GuildHomeTest, /// /// Guild has disabled invites. /// InvitesDisabled, /// /// Currently unknown. /// ActivitiesAlpha, /// /// Currently unknown. /// ActivitiesEmployee, /// /// Currently unknown. /// ActivitiesInternalDev, /// /// Currently unknown. /// AutomodTriggerKeywordFilter, /// /// Currently unknown. /// AutomodTriggerMlSpamFilter, /// /// Currently unknown. /// AutomodTriggerSpamLinkFilterGuild, /// /// Currently unknown. /// AutomodDefaultList, /// /// Currently unknown. /// Bfg, /// /// Currently unknown. /// BoostingTiersExperimentMediumGuild, /// /// Currently unknown. /// BoostingTiersExperimentSmallGuild, /// /// Guild has early access features for bot and library developers. /// BotDeveloperEarlyAccess, /// /// Currently unknown. /// CreatorMonetizable, /// /// Currently unknown. /// CreatorMonetizableDisabled, /// /// Currently unknown. /// CreatorMonetizableProvisional, /// /// Currently unknown. /// CreatorMonetizableWhiteGlove, /// /// Currently unknown. /// CreatorMonetizationApplicationAllowlist, /// /// Guild is set as a support server for an app in App Directory. /// DeveloperSupportServer, /// /// Guild was previously in the 2021-11_activities_baseline_engagement_bundle experiment. /// ExposedToActivitiesWtpExperiment, /// /// Guild had early access to the user timeouts. /// GuildCommunicationDisabledGuilds, /// /// Currently unknown. /// DisableGuildCommunication, /// /// Guild has access to the Home feature. /// GuildHomeOverride, /// /// Guild had early access to the Automod Default List. /// GuildAutomodDefaultList, /// /// Guild had early access to approving membership manually. /// GuildMemberVerificationExperiment, /// /// Guilds was previously in the 2022-05_mobile_web_role_subscription_purchase_page experiment. /// GuildRoleSubscriptionPurchaseFeedbackLoop, /// /// Guild was previously in the 2022-01_guild_role_subscription_trials experiment. /// GuildRoleSubscriptionTrials, /// /// Guild previously had access to voice channel activities and can bypass the boost level requirement. /// HadEarlyActivitiesAccess, /// /// Allows the guild to have 1,000+ active threads. /// IncreasedThreadLimit, /// /// Guild was previously in the 2022-05_mobile_web_role_subscription_purchase_page experiment. /// MobileWebRoleSubscriptionPurchasePage, /// /// Shards connections to the guild to different nodes that relay information between each other. /// RelayEnabled, /// /// Currently unknown. /// RestrictSpamRiskGuilds, /// /// Allows guild's members to purchase role subscriptions. /// RoleSubscriptionsAvailableForPurchase, /// /// Used by bot developers to test their bots with threads in guilds with 5 or less members and a bot. /// ThreadsEnabledTesting, /// /// Guild had early access to the voice channel effects. /// VoiceChannelEffects, /// /// Guild had early access to the soundboard feature. /// Soundboard, /// /// Ability to create and use store channels. /// [DiscordDeprecated("This feature is depcreated"), Obsolete] Commerce, /// /// Currently unknown. /// [DiscordDeprecated("This feature is depcreated"), Obsolete] ExposedToBoostingTiersExperiment, /// /// Deprecated in favor of Community. /// [DiscordDeprecated("This feature is depcreated"), Obsolete] PublicDisabled, /// /// Deprecated in favor of Community. /// [DiscordDeprecated("This feature is depcreated"), Obsolete] Public, /// /// The guild can use the seven-day archive time for threads. /// [DiscordDeprecated("This feature is depcreated"), Obsolete] SevenDayThreadArchive, /// /// The guild can use the three-day archive time for threads. /// [DiscordDeprecated("This feature is depcreated"), Obsolete] ThreeDayThreadArchive, /// /// Previously used to control which servers were displayed under the "Featured" category in Discovery. /// [DiscordDeprecated("This feature is depcreated"), Obsolete] Featurable, /// /// Shards connections to the guild to different nodes that relay information between each other. /// [DiscordDeprecated("This feature is depcreated"), Obsolete] ForceRelay, /// /// Currently unknown. /// [DiscordDeprecated("This feature is depcreated"), Obsolete] Lurkable, /// /// Created for the Fortnite server blackout event on Oct 13, 2019, when viewing the member list it would show "There's nothing to see here.". /// [DiscordDeprecated("This feature is depcreated"), Obsolete] MemberListDisabled, [DiscordInExperiment] CanUseCreatorStorePage, [DiscordInExperiment] CanUseBurstReactions, [DiscordInExperiment] HadGuildOnBoardingEverEnabled, [DiscordInExperiment] ChannelHighlightsDisabled, [DiscordInExperiment] ChannelHighlights, [DiscordInExperiment] CreatorMonetizableRestricted, [DiscordUnreleased] VoiceInThreadsEnabled, - [DiscordUnreleased] + [DiscordUnreleased("Feature related to automod.")] RaidAlertsEnabled, - [Experimental("Was recently added to determine whether guilds uses the newer permission system for application commands.")] + [DiscordInExperiment("Was recently added to determine whether guilds uses the newer permission system for application commands.")] UsesApplicationCommandsPermissionsV2, } diff --git a/Version.targets b/Version.targets index 3d32bcc95..66eae774a 100644 --- a/Version.targets +++ b/Version.targets @@ -1,21 +1,21 @@ - 10.3.1 + 10.3.2 $(VersionPrefix)-$(VersionSuffix)-$(BuildNumber) $(VersionPrefix).$(BuildNumber) $(VersionPrefix).$(BuildNumber) $(VersionPrefix)-$(VersionSuffix) $(VersionPrefix).0 $(VersionPrefix).0 $(VersionPrefix) $(VersionPrefix).0 $(VersionPrefix).0