/// <summary>Adds handlers to Command Service.</summary> /// <param name="assemblies">Assemblies to load handlers from.</param> /// <param name="builder">Hosted Commands Service builder.</param> /// <seealso cref="CommandsHandlerAttribute"/> /// <seealso cref="ICommandsLoader.LoadFromAssemblyAsync(Assembly, System.Threading.CancellationToken)"/> /// <seealso cref="CommandsOptions.Assemblies"/> public static IHostedCommandsServiceBuilder AddHandlers(this IHostedCommandsServiceBuilder builder, params Assembly[] assemblies) => builder.Configure(options => { foreach (Assembly asm in assemblies) { options.Assemblies.Add(asm); } });
/// <summary>Adds handlers to Command Service.</summary> /// <param name="builder">Hosted Commands Service builder.</param> /// <param name="handlerTypes">Types of handlers to add.</param> /// <seealso cref="CommandsHandlerAttribute"/> /// <seealso cref="ICommandsLoader.LoadFromTypeAsync(TypeInfo, System.Threading.CancellationToken)"/> /// <seealso cref="CommandsOptions.Classes"/> public static IHostedCommandsServiceBuilder AddHandlers(this IHostedCommandsServiceBuilder builder, params Type[] handlerTypes) => builder.Configure(options => { foreach (Type type in handlerTypes) { options.Classes.Add(type); } });
// for commands loader /// <summary>Removes all default assemblies and classes from Commands Options.</summary> /// <param name="builder">Hosted Commands Service builder.</param> /// <seealso cref="CommandsOptions"/> /// <seealso cref="CommandsHandlerAttribute"/> /// <seealso cref="ICommandsLoader"/> public static IHostedCommandsServiceBuilder RemoveDefaultHandlers(this IHostedCommandsServiceBuilder builder) { // build a default instance of options to get ones that need removing CommandsOptions defaultOptions = new CommandsOptions(); return(builder.Configure(options => { foreach (Assembly asm in defaultOptions.Assemblies) { options.Assemblies.Remove(asm); } foreach (Type type in defaultOptions.Classes) { options.Classes.Remove(type); } })); }
/// <summary>Sets prefix requirement.</summary> /// <param name="builder">Hosted Commands Service builder.</param> /// <param name="requirement">Prefix requirement.</param> /// <seealso cref="CommandsOptions.RequirePrefix"/> public static IHostedCommandsServiceBuilder SetPrefixRequirement(this IHostedCommandsServiceBuilder builder, PrefixRequirement requirement) => builder.Configure(options => options.RequirePrefix = requirement);
/// <summary>Sets prefix.</summary> /// <param name="builder">Hosted Commands Service builder.</param> /// <param name="prefix">Prefix value.</param> /// <seealso cref="CommandsOptions.Prefix"/> public static IHostedCommandsServiceBuilder SetPrefix(this IHostedCommandsServiceBuilder builder, string prefix) => builder.Configure(options => options.Prefix = prefix);
/// <summary>Sets case sensitivity.</summary> /// <param name="builder">Hosted Commands Service builder.</param> /// <param name="caseSensitive">Whether commands should be case sensitive.</param> /// <seealso cref="CommandsOptions.CaseSensitivity"/> public static IHostedCommandsServiceBuilder SetCaseSensitive(this IHostedCommandsServiceBuilder builder, bool caseSensitive) => builder.Configure(options => options.CaseSensitivity = caseSensitive);
// general /// <summary>Sets prefix and prefix requirement.</summary> /// <param name="builder">Hosted Commands Service builder.</param> /// <param name="prefix">Prefix value.</param> /// <param name="requirement">Prefix requirement.</param> /// <seealso cref="CommandsOptions.Prefix"/> /// <seealso cref="CommandsOptions.RequirePrefix"/> public static IHostedCommandsServiceBuilder SetPrefix(this IHostedCommandsServiceBuilder builder, string prefix, PrefixRequirement requirement) => builder.SetPrefix(prefix).SetPrefixRequirement(requirement);
/// <summary>Maps an argument converter in Argument Converter Provider.</summary> /// <param name="builder">Hosted Commands Service builder.</param> /// <param name="parameterType">Type of parameter to set converter for.</param> /// <param name="converter">Converter to convert type with.</param> /// <seealso cref="IArgumentConverterProvider"/> /// <seealso cref="IArgumentConverter"/> /// <seealso cref="ArgumentConverterProviderOptions.Converters"/> public static IHostedCommandsServiceBuilder MapArgumentConverter(this IHostedCommandsServiceBuilder builder, Type parameterType, IArgumentConverter converter) => builder.ConfigureArgumentConverterProvider(options => options.Converters[parameterType] = converter);
// for argument converter provider /// <summary>Sets a fallback enum argument converter in Argument Converter Provider.</summary> /// <param name="builder">Hosted Commands Service builder.</param> /// <param name="converter">Converter to convert enums with.</param> /// <seealso cref="IArgumentConverterProvider"/> /// <seealso cref="IArgumentConverter"/> /// <seealso cref="ArgumentConverterProviderOptions.EnumConverter"/> public static IHostedCommandsServiceBuilder SetEnumArgumentConverter(this IHostedCommandsServiceBuilder builder, IArgumentConverter converter) => builder.ConfigureArgumentConverterProvider(options => options.EnumConverter = converter);
// for initializers provider /// <summary>Maps command initializer for a command attribute type in Command Initializer Provider.</summary> /// <param name="builder">Hosted Commands Service builder.</param> /// <param name="commandArgumentType">Type of command attribute.</param> /// <param name="initializer">Initializer to use for given command attribute type.</param> /// <seealso cref="ICommandInitializerProvider"/> /// <seealso cref="ICommandInitializer"/> /// <seealso cref="CommandAttributeBase"/> /// <seealso cref="CommandInitializerProviderOptions.Initializers"/> public static IHostedCommandsServiceBuilder MapCommandInitializer(this IHostedCommandsServiceBuilder builder, Type commandArgumentType, ICommandInitializer initializer) => builder.ConfigureCommandInitializerProvider(options => options.Initializers[commandArgumentType] = initializer);
/// <summary>Sets base argument marker for Arguments Parser.</summary> /// <param name="builder">Hosted Commands Service builder.</param> /// <param name="marker">Marker for to use as base.</param> /// <seealso cref="IArgumentsParser"/> /// <seealso cref="ArgumentsParserOptions.BaseMarker"/> public static IHostedCommandsServiceBuilder SetArgumentBaseMarker(this IHostedCommandsServiceBuilder builder, char marker) => builder.ConfigureArgumentsParser(options => options.BaseMarker = marker);
/// <summary>Removes argument marker from Arguments Parser.</summary> /// <param name="builder">Hosted Commands Service builder.</param> /// <param name="startMarker">Opening marker for argument block.</param> /// <seealso cref="IArgumentsParser"/> /// <seealso cref="ArgumentsParserOptions.BlockMarkers"/> public static IHostedCommandsServiceBuilder RemoveArgumentBlockMarker(this IHostedCommandsServiceBuilder builder, char startMarker) => builder.ConfigureArgumentsParser(options => options.BlockMarkers.Remove(startMarker));
// for arguments parser /// <summary>Adds argument marker to Arguments Parser.</summary> /// <param name="builder">Hosted Commands Service builder.</param> /// <param name="startMarker">Opening marker for argument block.</param> /// <param name="endMarker">Closing marker for argument block.</param> /// <seealso cref="IArgumentsParser"/> /// <seealso cref="ArgumentsParserOptions.BlockMarkers"/> public static IHostedCommandsServiceBuilder AddArgumentBlockMarker(this IHostedCommandsServiceBuilder builder, char startMarker, char endMarker) => builder.ConfigureArgumentsParser(options => options.BlockMarkers[startMarker] = endMarker);
/// <summary>Adds handler to Command Service.</summary> /// <typeparam name="T">Type of handler to add.</typeparam> /// <param name="builder">Hosted Commands Service builder.</param> /// <seealso cref="CommandsHandlerAttribute"/> /// <seealso cref="ICommandsLoader.LoadFromTypeAsync(TypeInfo, System.Threading.CancellationToken)"/> /// <seealso cref="CommandsOptions.Classes"/> public static IHostedCommandsServiceBuilder AddHandler <T>(this IHostedCommandsServiceBuilder builder) => AddHandlers(builder, typeof(T));