Cleaned up extension projects, added fluent extension methods
This commit is contained in:
@@ -2,7 +2,12 @@
|
||||
{
|
||||
public static class CommandExtensions
|
||||
{
|
||||
public static CommandService Commands(this DiscordClient client, bool required = true)
|
||||
public static DiscordClient UsingCommands(this DiscordClient client, CommandServiceConfig config = null)
|
||||
{
|
||||
client.Services.Add(new CommandService(config));
|
||||
return client;
|
||||
}
|
||||
public static CommandService Commands(this DiscordClient client, bool required = true)
|
||||
=> client.Services.Get<CommandService>(required);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -21,13 +21,13 @@ namespace Discord.Commands
|
||||
//Groups store all commands by their module, used for more informative help
|
||||
internal IEnumerable<CommandMap> Categories => _categories.Values;
|
||||
|
||||
public event EventHandler<CommandEventArgs> Command = delegate { };
|
||||
public event EventHandler<CommandErrorEventArgs> CommandError = delegate { };
|
||||
public event EventHandler<CommandEventArgs> CommandExecuted = delegate { };
|
||||
public event EventHandler<CommandErrorEventArgs> CommandErrored = delegate { };
|
||||
|
||||
private void OnCommand(CommandEventArgs args)
|
||||
=> Command(this, args);
|
||||
=> CommandExecuted(this, args);
|
||||
private void OnCommandError(CommandErrorType errorType, CommandEventArgs args, Exception ex = null)
|
||||
=> CommandError(this, new CommandErrorEventArgs(errorType, args, ex));
|
||||
=> CommandErrored(this, new CommandErrorEventArgs(errorType, args, ex));
|
||||
|
||||
public CommandService(CommandServiceConfig config)
|
||||
{
|
||||
|
||||
@@ -1,8 +1,16 @@
|
||||
namespace Discord.Commands.Permissions.Levels
|
||||
using System;
|
||||
|
||||
namespace Discord.Commands.Permissions.Levels
|
||||
{
|
||||
public static class PermissionLevelExtensions
|
||||
{
|
||||
public static CommandBuilder MinPermissions(this CommandBuilder builder, int minPermissions)
|
||||
public static DiscordClient UsingPermissionLevels(this DiscordClient client, Func<User, Channel, int> permissionResolver)
|
||||
{
|
||||
client.Services.Add(new PermissionLevelService(permissionResolver));
|
||||
return client;
|
||||
}
|
||||
|
||||
public static CommandBuilder MinPermissions(this CommandBuilder builder, int minPermissions)
|
||||
{
|
||||
builder.AddCheck(new PermissionLevelChecker(builder.Service.Client, minPermissions));
|
||||
return builder;
|
||||
|
||||
@@ -1,8 +1,14 @@
|
||||
namespace Discord.Commands.Permissions.Userlist
|
||||
{
|
||||
public static class BlacklistExtensions
|
||||
{
|
||||
public static CommandBuilder UseGlobalBlacklist(this CommandBuilder builder)
|
||||
{
|
||||
public static DiscordClient UsingGlobalBlacklist(this DiscordClient client, params ulong[] initialUserIds)
|
||||
{
|
||||
client.Services.Add(new BlacklistService(initialUserIds));
|
||||
return client;
|
||||
}
|
||||
|
||||
public static CommandBuilder UseGlobalBlacklist(this CommandBuilder builder)
|
||||
{
|
||||
builder.AddCheck(new BlacklistChecker(builder.Service.Client));
|
||||
return builder;
|
||||
|
||||
@@ -1,17 +1,13 @@
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace Discord.Commands.Permissions.Userlist
|
||||
namespace Discord.Commands.Permissions.Userlist
|
||||
{
|
||||
public class BlacklistService : UserlistService
|
||||
{
|
||||
public BlacklistService(IEnumerable<ulong> initialList = null)
|
||||
public BlacklistService(params ulong[] initialList)
|
||||
: base(initialList)
|
||||
{
|
||||
}
|
||||
|
||||
public bool CanRun(User user)
|
||||
{
|
||||
return !_userList.ContainsKey(user.Id);
|
||||
}
|
||||
=> !_userList.ContainsKey(user.Id);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -13,12 +13,11 @@ namespace Discord.Commands.Permissions.Userlist
|
||||
public DiscordClient Client => _client;
|
||||
public IEnumerable<ulong> UserIds => _userList.Select(x => x.Key);
|
||||
|
||||
public UserlistService(IEnumerable<ulong> initialList = null)
|
||||
public UserlistService(params ulong[] initialUserIds)
|
||||
{
|
||||
if (initialList != null)
|
||||
_userList = new ConcurrentDictionary<ulong, bool>(initialList.Select(x => new KeyValuePair<ulong, bool>(x, true)));
|
||||
else
|
||||
_userList = new ConcurrentDictionary<ulong, bool>();
|
||||
_userList = new ConcurrentDictionary<ulong, bool>();
|
||||
for (int i = 0; i < initialUserIds.Length; i++)
|
||||
_userList.TryAdd(initialUserIds[i], true);
|
||||
}
|
||||
|
||||
public void Add(User user)
|
||||
@@ -31,6 +30,7 @@ namespace Discord.Commands.Permissions.Userlist
|
||||
{
|
||||
_userList[userId] = true;
|
||||
}
|
||||
|
||||
public bool Remove(User user)
|
||||
{
|
||||
if (user == null) throw new ArgumentNullException(nameof(user));
|
||||
@@ -44,7 +44,7 @@ namespace Discord.Commands.Permissions.Userlist
|
||||
return _userList.TryRemove(userId, out ignored);
|
||||
}
|
||||
|
||||
public void Install(DiscordClient client)
|
||||
void IService.Install(DiscordClient client)
|
||||
{
|
||||
_client = client;
|
||||
}
|
||||
|
||||
@@ -1,8 +1,14 @@
|
||||
namespace Discord.Commands.Permissions.Userlist
|
||||
{
|
||||
public static class WhitelistExtensions
|
||||
{
|
||||
public static CommandBuilder UseGlobalWhitelist(this CommandBuilder builder)
|
||||
{
|
||||
public static DiscordClient UsingGlobalWhitelist(this DiscordClient client, params ulong[] initialUserIds)
|
||||
{
|
||||
client.Services.Add(new WhitelistService(initialUserIds));
|
||||
return client;
|
||||
}
|
||||
|
||||
public static CommandBuilder UseGlobalWhitelist(this CommandBuilder builder)
|
||||
{
|
||||
builder.AddCheck(new WhitelistChecker(builder.Service.Client));
|
||||
return builder;
|
||||
|
||||
@@ -1,17 +1,13 @@
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace Discord.Commands.Permissions.Userlist
|
||||
namespace Discord.Commands.Permissions.Userlist
|
||||
{
|
||||
public class WhitelistService : UserlistService
|
||||
{
|
||||
public WhitelistService(IEnumerable<ulong> initialList = null)
|
||||
public WhitelistService(params ulong[] initialList)
|
||||
: base(initialList)
|
||||
{
|
||||
}
|
||||
|
||||
public bool CanRun(User user)
|
||||
{
|
||||
return _userList.ContainsKey(user.Id);
|
||||
}
|
||||
=> _userList.ContainsKey(user.Id);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
namespace Discord.Commands.Permissions.Visibility
|
||||
{
|
||||
public static class PrivateExtensions
|
||||
{
|
||||
public static CommandBuilder PrivateOnly(this CommandBuilder builder)
|
||||
{
|
||||
public static CommandBuilder PrivateOnly(this CommandBuilder builder)
|
||||
{
|
||||
builder.AddCheck(new PrivateChecker());
|
||||
return builder;
|
||||
|
||||
Reference in New Issue
Block a user