Co-Authored-By: Cenk Ergen <57065323+Cenngo@users.noreply.github.com>tags/3.1.0
| @@ -131,14 +131,24 @@ namespace Discord.Interactions | |||||
| { | { | ||||
| case RunMode.Sync: | case RunMode.Sync: | ||||
| { | { | ||||
| using var scope = services?.CreateScope(); | |||||
| return await ExecuteInternalAsync(context, args, scope?.ServiceProvider ?? EmptyServiceProvider.Instance).ConfigureAwait(false); | |||||
| if (CommandService._autoServiceScopes) | |||||
| { | |||||
| using var scope = services?.CreateScope(); | |||||
| 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 () => | ||||
| { | { | ||||
| using var scope = services?.CreateScope(); | |||||
| await ExecuteInternalAsync(context, args, scope?.ServiceProvider ?? EmptyServiceProvider.Instance).ConfigureAwait(false); | |||||
| if (CommandService._autoServiceScopes) | |||||
| { | |||||
| using var scope = services?.CreateScope(); | |||||
| 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> | ||||