Make module service scopes optional (#1997)
Co-Authored-By: Cenk Ergen <57065323+Cenngo@users.noreply.github.com>
This commit is contained in:
@@ -130,15 +130,25 @@ namespace Discord.Interactions
|
|||||||
switch (RunMode)
|
switch (RunMode)
|
||||||
{
|
{
|
||||||
case RunMode.Sync:
|
case RunMode.Sync:
|
||||||
|
{
|
||||||
|
if (CommandService._autoServiceScopes)
|
||||||
{
|
{
|
||||||
using var scope = services?.CreateScope();
|
using var scope = services?.CreateScope();
|
||||||
return await ExecuteInternalAsync(context, args, scope?.ServiceProvider ?? EmptyServiceProvider.Instance).ConfigureAwait(false);
|
return await ExecuteInternalAsync(context, args, scope?.ServiceProvider ?? EmptyServiceProvider.Instance).ConfigureAwait(false);
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
return await ExecuteInternalAsync(context, args, services).ConfigureAwait(false);
|
||||||
|
}
|
||||||
case RunMode.Async:
|
case RunMode.Async:
|
||||||
_ = Task.Run(async () =>
|
_ = Task.Run(async () =>
|
||||||
|
{
|
||||||
|
if (CommandService._autoServiceScopes)
|
||||||
{
|
{
|
||||||
using var scope = services?.CreateScope();
|
using var scope = services?.CreateScope();
|
||||||
await ExecuteInternalAsync(context, args, scope?.ServiceProvider ?? EmptyServiceProvider.Instance).ConfigureAwait(false);
|
await ExecuteInternalAsync(context, args, scope?.ServiceProvider ?? EmptyServiceProvider.Instance).ConfigureAwait(false);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
await ExecuteInternalAsync(context, args, services).ConfigureAwait(false);
|
||||||
});
|
});
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
|
|||||||
@@ -67,7 +67,7 @@ namespace Discord.Interactions
|
|||||||
internal readonly LogManager _logManager;
|
internal readonly LogManager _logManager;
|
||||||
internal readonly Func<DiscordRestClient> _getRestClient;
|
internal readonly Func<DiscordRestClient> _getRestClient;
|
||||||
|
|
||||||
internal readonly bool _throwOnError, _useCompiledLambda, _enableAutocompleteHandlers;
|
internal readonly bool _throwOnError, _useCompiledLambda, _enableAutocompleteHandlers, _autoServiceScopes;
|
||||||
internal readonly string _wildCardExp;
|
internal readonly string _wildCardExp;
|
||||||
internal readonly RunMode _runMode;
|
internal readonly RunMode _runMode;
|
||||||
internal readonly RestResponseCallback _restResponseCallback;
|
internal readonly RestResponseCallback _restResponseCallback;
|
||||||
@@ -156,6 +156,7 @@ namespace Discord.Interactions
|
|||||||
_wildCardExp = config.WildCardExpression;
|
_wildCardExp = config.WildCardExpression;
|
||||||
_useCompiledLambda = config.UseCompiledLambda;
|
_useCompiledLambda = config.UseCompiledLambda;
|
||||||
_enableAutocompleteHandlers = config.EnableAutocompleteHandlers;
|
_enableAutocompleteHandlers = config.EnableAutocompleteHandlers;
|
||||||
|
_autoServiceScopes = config.AutoServiceScopes;
|
||||||
_restResponseCallback = config.RestResponseCallback;
|
_restResponseCallback = config.RestResponseCallback;
|
||||||
|
|
||||||
_genericTypeConverters = new ConcurrentDictionary<Type, Type>
|
_genericTypeConverters = new ConcurrentDictionary<Type, Type>
|
||||||
|
|||||||
@@ -47,6 +47,11 @@ namespace Discord.Interactions
|
|||||||
/// </remarks>
|
/// </remarks>
|
||||||
public bool EnableAutocompleteHandlers { get; set; } = true;
|
public bool EnableAutocompleteHandlers { get; set; } = true;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Gets or sets whether new service scopes should be automatically created when resolving module depedencies on every command execution.
|
||||||
|
/// </summary>
|
||||||
|
public bool AutoServiceScopes { get; set; } = true;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Gets or sets delegate to be used by the <see cref="InteractionService"/> when responding to a Rest based interaction.
|
/// Gets or sets delegate to be used by the <see cref="InteractionService"/> when responding to a Rest based interaction.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|||||||
Reference in New Issue
Block a user