From d8a7ddbd34f3395f34da59003ff6e236251665b4 Mon Sep 17 00:00:00 2001 From: Cenk Ergen <57065323+Cenngo@users.noreply.github.com> Date: Sat, 1 Jan 2022 23:33:09 +0300 Subject: [PATCH] init --- .../ComponentCommandParameterBuilder.cs | 39 +++++++++++++++++++ .../ComponentCommandParameterInfo.cs | 19 +++++++++ 2 files changed, 58 insertions(+) create mode 100644 src/Discord.Net.Interactions/Builders/Parameters/ComponentCommandParameterBuilder.cs create mode 100644 src/Discord.Net.Interactions/Info/Parameters/ComponentCommandParameterInfo.cs diff --git a/src/Discord.Net.Interactions/Builders/Parameters/ComponentCommandParameterBuilder.cs b/src/Discord.Net.Interactions/Builders/Parameters/ComponentCommandParameterBuilder.cs new file mode 100644 index 000000000..666fbef88 --- /dev/null +++ b/src/Discord.Net.Interactions/Builders/Parameters/ComponentCommandParameterBuilder.cs @@ -0,0 +1,39 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Discord.Interactions.Builders +{ + public class ComponentCommandParameterBuilder : ParameterBuilder + { + public TypeReader TypeReader { get; private set; } + protected override ComponentCommandParameterBuilder Instance => this; + + public ComponentCommandParameterBuilder(ICommandBuilder command) : base(command) { } + + public ComponentCommandParameterBuilder(ICommandBuilder command, string name, Type type) : base(command, name, type) { } + + /// + public override ComponentCommandParameterBuilder SetParameterType(Type type) => SetParameterType(type, null); + + /// + /// Sets . + /// + /// New value of the . + /// Service container to be used to resolve the dependencies of this parameters . + /// + /// The builder instance. + /// + public ComponentCommandParameterBuilder SetParameterType(Type type, IServiceProvider services = null) + { + base.SetParameterType(type); + TypeReader = Command.Module.InteractionService.GetTypeConverter(ParameterType, services); + return this; + } + + internal override ComponentCommandParameterInfo Build(ICommandInfo command) + => new(this, command); + } +} diff --git a/src/Discord.Net.Interactions/Info/Parameters/ComponentCommandParameterInfo.cs b/src/Discord.Net.Interactions/Info/Parameters/ComponentCommandParameterInfo.cs new file mode 100644 index 000000000..dfcbf26bb --- /dev/null +++ b/src/Discord.Net.Interactions/Info/Parameters/ComponentCommandParameterInfo.cs @@ -0,0 +1,19 @@ +using Discord.Interactions.Builders; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Discord.Interactions +{ + public class ComponentCommandParameterInfo : CommandParameterInfo + { + public TypeReader TypeReader { get; } + + internal ComponentCommandParameterInfo(ComponentCommandParameterBuilder builder, ICommandInfo command) : base(builder, command) + { + TypeReader = builder.TypeReader; + } + } +}