Add Async suffix to command-related Tasks (#804)
commit b7fb44a94fb1e75f696f281d6b201eba3f48e864 Author: Hsu Still <341464@gmail.com> Date: Sat Sep 2 14:34:18 2017 +0800 Fix more async naming violation commit e6912e2d020c69325826dbfa62c07cd1ef2cc45f Author: Hsu Still <341464@gmail.com> Date: Sat Sep 2 14:23:04 2017 +0800 Fix incorrect null xmldocs string commit da8d23222d207853375c3512232d1d7fd3629cad Author: Hsu Still <341464@gmail.com> Date: Sat Sep 2 14:17:12 2017 +0800 Fix CheckPreconditionsAsync commit 992407407a42fec9087c9ed18e0bf5de30dff82c Author: Hsu Still <341464@gmail.com> Date: Sat Sep 2 14:07:12 2017 +0800 Add Async suffix to abstract Task methods
This commit is contained in:
@@ -7,6 +7,6 @@ namespace Discord.Commands
|
|||||||
[AttributeUsage(AttributeTargets.Parameter, AllowMultiple = true, Inherited = true)]
|
[AttributeUsage(AttributeTargets.Parameter, AllowMultiple = true, Inherited = true)]
|
||||||
public abstract class ParameterPreconditionAttribute : Attribute
|
public abstract class ParameterPreconditionAttribute : Attribute
|
||||||
{
|
{
|
||||||
public abstract Task<PreconditionResult> CheckPermissions(ICommandContext context, ParameterInfo parameter, object value, IServiceProvider services);
|
public abstract Task<PreconditionResult> CheckPermissionsAsync(ICommandContext context, ParameterInfo parameter, object value, IServiceProvider services);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -8,11 +8,11 @@ namespace Discord.Commands
|
|||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Specify a group that this precondition belongs to. Preconditions of the same group require only one
|
/// Specify a group that this precondition belongs to. Preconditions of the same group require only one
|
||||||
/// of the preconditions to pass in order to be successful (A || B). Specifying <see cref="Group"/> = <see cref="null"/>
|
/// of the preconditions to pass in order to be successful (A || B). Specifying <see cref="Group"/> = <see langword="null"/>
|
||||||
/// or not at all will require *all* preconditions to pass, just like normal (A && B).
|
/// or not at all will require *all* preconditions to pass, just like normal (A && B).
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public string Group { get; set; } = null;
|
public string Group { get; set; } = null;
|
||||||
|
|
||||||
public abstract Task<PreconditionResult> CheckPermissions(ICommandContext context, CommandInfo command, IServiceProvider services);
|
public abstract Task<PreconditionResult> CheckPermissionsAsync(ICommandContext context, CommandInfo command, IServiceProvider services);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -41,7 +41,7 @@ namespace Discord.Commands
|
|||||||
GuildPermission = null;
|
GuildPermission = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
public override async Task<PreconditionResult> CheckPermissions(ICommandContext context, CommandInfo command, IServiceProvider services)
|
public override async Task<PreconditionResult> CheckPermissionsAsync(ICommandContext context, CommandInfo command, IServiceProvider services)
|
||||||
{
|
{
|
||||||
IGuildUser guildUser = null;
|
IGuildUser guildUser = null;
|
||||||
if (context.Guild != null)
|
if (context.Guild != null)
|
||||||
|
|||||||
@@ -38,7 +38,7 @@ namespace Discord.Commands
|
|||||||
Contexts = contexts;
|
Contexts = contexts;
|
||||||
}
|
}
|
||||||
|
|
||||||
public override Task<PreconditionResult> CheckPermissions(ICommandContext context, CommandInfo command, IServiceProvider services)
|
public override Task<PreconditionResult> CheckPermissionsAsync(ICommandContext context, CommandInfo command, IServiceProvider services)
|
||||||
{
|
{
|
||||||
bool isValid = false;
|
bool isValid = false;
|
||||||
|
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ namespace Discord.Commands
|
|||||||
[AttributeUsage(AttributeTargets.Class | AttributeTargets.Method, AllowMultiple = false, Inherited = true)]
|
[AttributeUsage(AttributeTargets.Class | AttributeTargets.Method, AllowMultiple = false, Inherited = true)]
|
||||||
public class RequireNsfwAttribute : PreconditionAttribute
|
public class RequireNsfwAttribute : PreconditionAttribute
|
||||||
{
|
{
|
||||||
public override Task<PreconditionResult> CheckPermissions(ICommandContext context, CommandInfo command, IServiceProvider services)
|
public override Task<PreconditionResult> CheckPermissionsAsync(ICommandContext context, CommandInfo command, IServiceProvider services)
|
||||||
{
|
{
|
||||||
if (context.Channel is ITextChannel text && text.IsNsfw)
|
if (context.Channel is ITextChannel text && text.IsNsfw)
|
||||||
return Task.FromResult(PreconditionResult.FromSuccess());
|
return Task.FromResult(PreconditionResult.FromSuccess());
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ namespace Discord.Commands
|
|||||||
[AttributeUsage(AttributeTargets.Class | AttributeTargets.Method, AllowMultiple = false, Inherited = true)]
|
[AttributeUsage(AttributeTargets.Class | AttributeTargets.Method, AllowMultiple = false, Inherited = true)]
|
||||||
public class RequireOwnerAttribute : PreconditionAttribute
|
public class RequireOwnerAttribute : PreconditionAttribute
|
||||||
{
|
{
|
||||||
public override async Task<PreconditionResult> CheckPermissions(ICommandContext context, CommandInfo command, IServiceProvider services)
|
public override async Task<PreconditionResult> CheckPermissionsAsync(ICommandContext context, CommandInfo command, IServiceProvider services)
|
||||||
{
|
{
|
||||||
switch (context.Client.TokenType)
|
switch (context.Client.TokenType)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -42,7 +42,7 @@ namespace Discord.Commands
|
|||||||
GuildPermission = null;
|
GuildPermission = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
public override Task<PreconditionResult> CheckPermissions(ICommandContext context, CommandInfo command, IServiceProvider services)
|
public override Task<PreconditionResult> CheckPermissionsAsync(ICommandContext context, CommandInfo command, IServiceProvider services)
|
||||||
{
|
{
|
||||||
var guildUser = context.User as IGuildUser;
|
var guildUser = context.User as IGuildUser;
|
||||||
|
|
||||||
|
|||||||
@@ -14,7 +14,7 @@ namespace Discord.Commands
|
|||||||
QuotedParameter
|
QuotedParameter
|
||||||
}
|
}
|
||||||
|
|
||||||
public static async Task<ParseResult> ParseArgs(CommandInfo command, ICommandContext context, IServiceProvider services, string input, int startPos)
|
public static async Task<ParseResult> ParseArgsAsync(CommandInfo command, ICommandContext context, IServiceProvider services, string input, int startPos)
|
||||||
{
|
{
|
||||||
ParameterInfo curParam = null;
|
ParameterInfo curParam = null;
|
||||||
StringBuilder argBuilder = new StringBuilder(input.Length);
|
StringBuilder argBuilder = new StringBuilder(input.Length);
|
||||||
@@ -111,7 +111,7 @@ namespace Discord.Commands
|
|||||||
if (curParam == null)
|
if (curParam == null)
|
||||||
return ParseResult.FromError(CommandError.BadArgCount, "The input text has too many parameters.");
|
return ParseResult.FromError(CommandError.BadArgCount, "The input text has too many parameters.");
|
||||||
|
|
||||||
var typeReaderResult = await curParam.Parse(context, argString, services).ConfigureAwait(false);
|
var typeReaderResult = await curParam.ParseAsync(context, argString, services).ConfigureAwait(false);
|
||||||
if (!typeReaderResult.IsSuccess && typeReaderResult.Error != CommandError.MultipleMatches)
|
if (!typeReaderResult.IsSuccess && typeReaderResult.Error != CommandError.MultipleMatches)
|
||||||
return ParseResult.FromError(typeReaderResult);
|
return ParseResult.FromError(typeReaderResult);
|
||||||
|
|
||||||
@@ -134,7 +134,7 @@ namespace Discord.Commands
|
|||||||
|
|
||||||
if (curParam != null && curParam.IsRemainder)
|
if (curParam != null && curParam.IsRemainder)
|
||||||
{
|
{
|
||||||
var typeReaderResult = await curParam.Parse(context, argBuilder.ToString(), services).ConfigureAwait(false);
|
var typeReaderResult = await curParam.ParseAsync(context, argBuilder.ToString(), services).ConfigureAwait(false);
|
||||||
if (!typeReaderResult.IsSuccess)
|
if (!typeReaderResult.IsSuccess)
|
||||||
return ParseResult.FromError(typeReaderResult);
|
return ParseResult.FromError(typeReaderResult);
|
||||||
argList.Add(typeReaderResult);
|
argList.Add(typeReaderResult);
|
||||||
|
|||||||
@@ -78,7 +78,7 @@ namespace Discord.Commands
|
|||||||
{
|
{
|
||||||
foreach (PreconditionAttribute precondition in preconditionGroup)
|
foreach (PreconditionAttribute precondition in preconditionGroup)
|
||||||
{
|
{
|
||||||
var result = await precondition.CheckPermissions(context, this, services).ConfigureAwait(false);
|
var result = await precondition.CheckPermissionsAsync(context, this, services).ConfigureAwait(false);
|
||||||
if (!result.IsSuccess)
|
if (!result.IsSuccess)
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
@@ -87,7 +87,7 @@ namespace Discord.Commands
|
|||||||
{
|
{
|
||||||
var results = new List<PreconditionResult>();
|
var results = new List<PreconditionResult>();
|
||||||
foreach (PreconditionAttribute precondition in preconditionGroup)
|
foreach (PreconditionAttribute precondition in preconditionGroup)
|
||||||
results.Add(await precondition.CheckPermissions(context, this, services).ConfigureAwait(false));
|
results.Add(await precondition.CheckPermissionsAsync(context, this, services).ConfigureAwait(false));
|
||||||
|
|
||||||
if (!results.Any(p => p.IsSuccess))
|
if (!results.Any(p => p.IsSuccess))
|
||||||
return PreconditionGroupResult.FromError($"{type} precondition group {preconditionGroup.Key} failed.", results);
|
return PreconditionGroupResult.FromError($"{type} precondition group {preconditionGroup.Key} failed.", results);
|
||||||
@@ -117,7 +117,7 @@ namespace Discord.Commands
|
|||||||
return ParseResult.FromError(preconditionResult);
|
return ParseResult.FromError(preconditionResult);
|
||||||
|
|
||||||
string input = searchResult.Text.Substring(startIndex);
|
string input = searchResult.Text.Substring(startIndex);
|
||||||
return await CommandParser.ParseArgs(this, context, services, input, 0).ConfigureAwait(false);
|
return await CommandParser.ParseArgsAsync(this, context, services, input, 0).ConfigureAwait(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
public Task<IResult> ExecuteAsync(ICommandContext context, ParseResult parseResult, IServiceProvider services)
|
public Task<IResult> ExecuteAsync(ICommandContext context, ParseResult parseResult, IServiceProvider services)
|
||||||
@@ -163,11 +163,11 @@ namespace Discord.Commands
|
|||||||
switch (RunMode)
|
switch (RunMode)
|
||||||
{
|
{
|
||||||
case RunMode.Sync: //Always sync
|
case RunMode.Sync: //Always sync
|
||||||
return await ExecuteAsyncInternal(context, args, services).ConfigureAwait(false);
|
return await ExecuteAsyncInternalAsync(context, args, services).ConfigureAwait(false);
|
||||||
case RunMode.Async: //Always async
|
case RunMode.Async: //Always async
|
||||||
var t2 = Task.Run(async () =>
|
var t2 = Task.Run(async () =>
|
||||||
{
|
{
|
||||||
await ExecuteAsyncInternal(context, args, services).ConfigureAwait(false);
|
await ExecuteAsyncInternalAsync(context, args, services).ConfigureAwait(false);
|
||||||
});
|
});
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@@ -179,7 +179,7 @@ namespace Discord.Commands
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private async Task<IResult> ExecuteAsyncInternal(ICommandContext context, object[] args, IServiceProvider services)
|
private async Task<IResult> ExecuteAsyncInternalAsync(ICommandContext context, object[] args, IServiceProvider services)
|
||||||
{
|
{
|
||||||
await Module.Service._cmdLogger.DebugAsync($"Executing {GetLogText(context)}").ConfigureAwait(false);
|
await Module.Service._cmdLogger.DebugAsync($"Executing {GetLogText(context)}").ConfigureAwait(false);
|
||||||
try
|
try
|
||||||
|
|||||||
@@ -48,7 +48,7 @@ namespace Discord.Commands
|
|||||||
|
|
||||||
foreach (var precondition in Preconditions)
|
foreach (var precondition in Preconditions)
|
||||||
{
|
{
|
||||||
var result = await precondition.CheckPermissions(context, this, arg, services).ConfigureAwait(false);
|
var result = await precondition.CheckPermissionsAsync(context, this, arg, services).ConfigureAwait(false);
|
||||||
if (!result.IsSuccess)
|
if (!result.IsSuccess)
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
@@ -56,10 +56,10 @@ namespace Discord.Commands
|
|||||||
return PreconditionResult.FromSuccess();
|
return PreconditionResult.FromSuccess();
|
||||||
}
|
}
|
||||||
|
|
||||||
public async Task<TypeReaderResult> Parse(ICommandContext context, string input, IServiceProvider services = null)
|
public async Task<TypeReaderResult> ParseAsync(ICommandContext context, string input, IServiceProvider services = null)
|
||||||
{
|
{
|
||||||
services = services ?? EmptyServiceProvider.Instance;
|
services = services ?? EmptyServiceProvider.Instance;
|
||||||
return await _reader.Read(context, input, services).ConfigureAwait(false);
|
return await _reader.ReadAsync(context, input, services).ConfigureAwait(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
public override string ToString() => Name;
|
public override string ToString() => Name;
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ namespace Discord.Commands
|
|||||||
internal class ChannelTypeReader<T> : TypeReader
|
internal class ChannelTypeReader<T> : TypeReader
|
||||||
where T : class, IChannel
|
where T : class, IChannel
|
||||||
{
|
{
|
||||||
public override async Task<TypeReaderResult> Read(ICommandContext context, string input, IServiceProvider services)
|
public override async Task<TypeReaderResult> ReadAsync(ICommandContext context, string input, IServiceProvider services)
|
||||||
{
|
{
|
||||||
if (context.Guild != null)
|
if (context.Guild != null)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -44,7 +44,7 @@ namespace Discord.Commands
|
|||||||
_enumsByValue = byValueBuilder.ToImmutable();
|
_enumsByValue = byValueBuilder.ToImmutable();
|
||||||
}
|
}
|
||||||
|
|
||||||
public override Task<TypeReaderResult> Read(ICommandContext context, string input, IServiceProvider services)
|
public override Task<TypeReaderResult> ReadAsync(ICommandContext context, string input, IServiceProvider services)
|
||||||
{
|
{
|
||||||
object enumValue;
|
object enumValue;
|
||||||
|
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ namespace Discord.Commands
|
|||||||
internal class MessageTypeReader<T> : TypeReader
|
internal class MessageTypeReader<T> : TypeReader
|
||||||
where T : class, IMessage
|
where T : class, IMessage
|
||||||
{
|
{
|
||||||
public override async Task<TypeReaderResult> Read(ICommandContext context, string input, IServiceProvider services)
|
public override async Task<TypeReaderResult> ReadAsync(ICommandContext context, string input, IServiceProvider services)
|
||||||
{
|
{
|
||||||
ulong id;
|
ulong id;
|
||||||
|
|
||||||
|
|||||||
@@ -24,11 +24,11 @@ namespace Discord.Commands
|
|||||||
_baseTypeReader = baseTypeReader;
|
_baseTypeReader = baseTypeReader;
|
||||||
}
|
}
|
||||||
|
|
||||||
public override async Task<TypeReaderResult> Read(ICommandContext context, string input, IServiceProvider services)
|
public override async Task<TypeReaderResult> ReadAsync(ICommandContext context, string input, IServiceProvider services)
|
||||||
{
|
{
|
||||||
if (string.Equals(input, "null", StringComparison.OrdinalIgnoreCase) || string.Equals(input, "nothing", StringComparison.OrdinalIgnoreCase))
|
if (string.Equals(input, "null", StringComparison.OrdinalIgnoreCase) || string.Equals(input, "nothing", StringComparison.OrdinalIgnoreCase))
|
||||||
return TypeReaderResult.FromSuccess(new T?());
|
return TypeReaderResult.FromSuccess(new T?());
|
||||||
return await _baseTypeReader.Read(context, input, services); ;
|
return await _baseTypeReader.ReadAsync(context, input, services);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -30,7 +30,7 @@ namespace Discord.Commands
|
|||||||
_score = score;
|
_score = score;
|
||||||
}
|
}
|
||||||
|
|
||||||
public override Task<TypeReaderResult> Read(ICommandContext context, string input, IServiceProvider services)
|
public override Task<TypeReaderResult> ReadAsync(ICommandContext context, string input, IServiceProvider services)
|
||||||
{
|
{
|
||||||
if (_tryParse(input, out T value))
|
if (_tryParse(input, out T value))
|
||||||
return Task.FromResult(TypeReaderResult.FromSuccess(new TypeReaderValue(value, _score)));
|
return Task.FromResult(TypeReaderResult.FromSuccess(new TypeReaderValue(value, _score)));
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ namespace Discord.Commands
|
|||||||
internal class RoleTypeReader<T> : TypeReader
|
internal class RoleTypeReader<T> : TypeReader
|
||||||
where T : class, IRole
|
where T : class, IRole
|
||||||
{
|
{
|
||||||
public override Task<TypeReaderResult> Read(ICommandContext context, string input, IServiceProvider services)
|
public override Task<TypeReaderResult> ReadAsync(ICommandContext context, string input, IServiceProvider services)
|
||||||
{
|
{
|
||||||
ulong id;
|
ulong id;
|
||||||
|
|
||||||
|
|||||||
@@ -5,6 +5,6 @@ namespace Discord.Commands
|
|||||||
{
|
{
|
||||||
public abstract class TypeReader
|
public abstract class TypeReader
|
||||||
{
|
{
|
||||||
public abstract Task<TypeReaderResult> Read(ICommandContext context, string input, IServiceProvider services);
|
public abstract Task<TypeReaderResult> ReadAsync(ICommandContext context, string input, IServiceProvider services);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -10,7 +10,7 @@ namespace Discord.Commands
|
|||||||
internal class UserTypeReader<T> : TypeReader
|
internal class UserTypeReader<T> : TypeReader
|
||||||
where T : class, IUser
|
where T : class, IUser
|
||||||
{
|
{
|
||||||
public override async Task<TypeReaderResult> Read(ICommandContext context, string input, IServiceProvider services)
|
public override async Task<TypeReaderResult> ReadAsync(ICommandContext context, string input, IServiceProvider services)
|
||||||
{
|
{
|
||||||
var results = new Dictionary<ulong, TypeReaderValue>();
|
var results = new Dictionary<ulong, TypeReaderValue>();
|
||||||
IReadOnlyCollection<IUser> channelUsers = (await context.Channel.GetUsersAsync(CacheMode.CacheOnly).Flatten().ConfigureAwait(false)).ToArray(); //TODO: must be a better way?
|
IReadOnlyCollection<IUser> channelUsers = (await context.Channel.GetUsersAsync(CacheMode.CacheOnly).Flatten().ConfigureAwait(false)).ToArray(); //TODO: must be a better way?
|
||||||
|
|||||||
Reference in New Issue
Block a user