Fixed RunMode.Sync running Async. Added ThrowOnError option.
This commit is contained in:
@@ -24,7 +24,7 @@ namespace Discord.Commands
|
|||||||
private readonly HashSet<ModuleInfo> _moduleDefs;
|
private readonly HashSet<ModuleInfo> _moduleDefs;
|
||||||
private readonly CommandMap _map;
|
private readonly CommandMap _map;
|
||||||
|
|
||||||
internal readonly bool _caseSensitive;
|
internal readonly bool _caseSensitive, _throwOnError;
|
||||||
internal readonly char _separatorChar;
|
internal readonly char _separatorChar;
|
||||||
internal readonly RunMode _defaultRunMode;
|
internal readonly RunMode _defaultRunMode;
|
||||||
internal readonly Logger _cmdLogger;
|
internal readonly Logger _cmdLogger;
|
||||||
@@ -38,6 +38,7 @@ namespace Discord.Commands
|
|||||||
public CommandService(CommandServiceConfig config)
|
public CommandService(CommandServiceConfig config)
|
||||||
{
|
{
|
||||||
_caseSensitive = config.CaseSensitiveCommands;
|
_caseSensitive = config.CaseSensitiveCommands;
|
||||||
|
_throwOnError = config.ThrowOnError;
|
||||||
_separatorChar = config.SeparatorChar;
|
_separatorChar = config.SeparatorChar;
|
||||||
_defaultRunMode = config.DefaultRunMode;
|
_defaultRunMode = config.DefaultRunMode;
|
||||||
if (_defaultRunMode == RunMode.Default)
|
if (_defaultRunMode == RunMode.Default)
|
||||||
|
|||||||
@@ -11,5 +11,11 @@
|
|||||||
|
|
||||||
/// <summary> Gets or sets the minimum log level severity that will be sent to the Log event. </summary>
|
/// <summary> Gets or sets the minimum log level severity that will be sent to the Log event. </summary>
|
||||||
public LogSeverity LogLevel { get; set; } = LogSeverity.Info;
|
public LogSeverity LogLevel { get; set; } = LogSeverity.Info;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Gets or sets whether RunMode.Sync commands should push exceptions up to the caller.
|
||||||
|
/// If false or an RunMode.Async command, exceptions are only reported in the Log event.
|
||||||
|
///</summary>
|
||||||
|
public bool ThrowOnError { get; set; } = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -140,7 +140,7 @@ namespace Discord.Commands
|
|||||||
switch (RunMode)
|
switch (RunMode)
|
||||||
{
|
{
|
||||||
case RunMode.Sync: //Always sync
|
case RunMode.Sync: //Always sync
|
||||||
var t1 = ExecuteAsyncInternal(context, args, map);
|
await ExecuteAsyncInternal(context, args, map).ConfigureAwait(false);
|
||||||
break;
|
break;
|
||||||
case RunMode.Async: //Always async
|
case RunMode.Async: //Always async
|
||||||
var t2 = Task.Run(async () =>
|
var t2 = Task.Run(async () =>
|
||||||
@@ -168,7 +168,8 @@ namespace Discord.Commands
|
|||||||
{
|
{
|
||||||
ex = new CommandException(this, context, ex);
|
ex = new CommandException(this, context, ex);
|
||||||
await Module.Service._cmdLogger.ErrorAsync(ex).ConfigureAwait(false);
|
await Module.Service._cmdLogger.ErrorAsync(ex).ConfigureAwait(false);
|
||||||
throw;
|
if (Module.Service._throwOnError)
|
||||||
|
throw;
|
||||||
}
|
}
|
||||||
await Module.Service._cmdLogger.VerboseAsync($"Executed {GetLogText(context)}").ConfigureAwait(false);
|
await Module.Service._cmdLogger.VerboseAsync($"Executed {GetLogText(context)}").ConfigureAwait(false);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user