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