@@ -45,6 +45,47 @@ namespace Discord | |||||
private List<ActionRowBuilder> _actionRows { get; set; } | private List<ActionRowBuilder> _actionRows { get; set; } | ||||
/// <summary> | |||||
/// Creates a new builder from a message. | |||||
/// </summary> | |||||
/// <param name="message">The message to create the builder from.</param> | |||||
/// <returns>The newly created builder.</returns> | |||||
public static ComponentBuilder FromMessage(IMessage message) | |||||
=> FromComponents(message.Components); | |||||
/// <summary> | |||||
/// Creates a new builder from the provided list of components. | |||||
/// </summary> | |||||
/// <param name="components">The components to create the builder from.</param> | |||||
/// <returns>The newly created builder.</returns> | |||||
public static ComponentBuilder FromComponents(IReadOnlyCollection<IMessageComponent> components) | |||||
{ | |||||
var builder = new ComponentBuilder(); | |||||
for(int i = 0; i != components.Count; i++) | |||||
{ | |||||
var component = components.ElementAt(i); | |||||
builder.AddComponent(component, i); | |||||
} | |||||
return builder; | |||||
} | |||||
internal void AddComponent(IMessageComponent component, int row) | |||||
{ | |||||
switch (component) | |||||
{ | |||||
case ButtonComponent button: | |||||
this.WithButton(button.Label, button.CustomId, button.Style, button.Emote, button.Url, button.Disabled, row); | |||||
break; | |||||
case ActionRowComponent actionRow: | |||||
foreach (var cmp in actionRow.Components) | |||||
AddComponent(cmp, row); | |||||
break; | |||||
case SelectMenu menu: | |||||
this.WithSelectMenu(menu.Placeholder, menu.CustomId, menu.Options.Select(x => new SelectMenuOptionBuilder(x.Label, x.Value, x.Description, x.Emote, x.Default)).ToList(), menu.Placeholder, menu.MinValues, menu.MaxValues, menu.Disabled, row); | |||||
break; | |||||
} | |||||
} | |||||
/// <summary> | /// <summary> | ||||
/// Adds a <see cref="SelectMenuBuilder"/> to the <see cref="ComponentBuilder"/> at the specific row. | /// Adds a <see cref="SelectMenuBuilder"/> to the <see cref="ComponentBuilder"/> at the specific row. | ||||
/// If the row cannot accept the component then it will add it to a row that can. | /// If the row cannot accept the component then it will add it to a row that can. | ||||
@@ -8,7 +8,7 @@ | |||||
<TargetFrameworks Condition=" '$(OS)' == 'Windows_NT' ">net461;netstandard2.0;netstandard2.1</TargetFrameworks> | <TargetFrameworks Condition=" '$(OS)' == 'Windows_NT' ">net461;netstandard2.0;netstandard2.1</TargetFrameworks> | ||||
<TargetFrameworks Condition=" '$(OS)' != 'Windows_NT' ">netstandard2.0;netstandard2.1</TargetFrameworks> | <TargetFrameworks Condition=" '$(OS)' != 'Windows_NT' ">netstandard2.0;netstandard2.1</TargetFrameworks> | ||||
<AllowUnsafeBlocks>true</AllowUnsafeBlocks> | <AllowUnsafeBlocks>true</AllowUnsafeBlocks> | ||||
<Version>3.0.1</Version> | |||||
<Version>3.0.2</Version> | |||||
<RepositoryUrl>https://github.com/Discord-Net-Labs/Discord.Net-Labs</RepositoryUrl> | <RepositoryUrl>https://github.com/Discord-Net-Labs/Discord.Net-Labs</RepositoryUrl> | ||||
<PackageProjectUrl>https://github.com/Discord-Net-Labs/Discord.Net-Labs</PackageProjectUrl> | <PackageProjectUrl>https://github.com/Discord-Net-Labs/Discord.Net-Labs</PackageProjectUrl> | ||||
<PackageIcon>Temporary.png</PackageIcon> | <PackageIcon>Temporary.png</PackageIcon> | ||||
@@ -16,8 +16,8 @@ | |||||
</PropertyGroup> | </PropertyGroup> | ||||
<PropertyGroup> | <PropertyGroup> | ||||
<DocumentationFile>..\Discord.Net.WebSocket\Discord.Net.WebSocket.xml</DocumentationFile> | <DocumentationFile>..\Discord.Net.WebSocket\Discord.Net.WebSocket.xml</DocumentationFile> | ||||
<AssemblyVersion>3.0.1</AssemblyVersion> | |||||
<FileVersion>3.0.1</FileVersion> | |||||
<AssemblyVersion>3.0.2</AssemblyVersion> | |||||
<FileVersion>3.0.2</FileVersion> | |||||
</PropertyGroup> | </PropertyGroup> | ||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'"> | <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'"> | ||||
<DefineConstants>TRACE</DefineConstants> | <DefineConstants>TRACE</DefineConstants> | ||||
@@ -2,7 +2,7 @@ | |||||
<package xmlns="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd"> | <package xmlns="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd"> | ||||
<metadata> | <metadata> | ||||
<id>Discord.Net.Labs</id> | <id>Discord.Net.Labs</id> | ||||
<version>3.0.1$suffix$</version> | |||||
<version>3.0.2$suffix$</version> | |||||
<title>Discord.Net Labs</title> | <title>Discord.Net Labs</title> | ||||
<authors>Discord.Net Contributors</authors> | <authors>Discord.Net Contributors</authors> | ||||
<owners>quinchs</owners> | <owners>quinchs</owners> | ||||
@@ -16,21 +16,21 @@ | |||||
<group targetFramework="net461"> | <group targetFramework="net461"> | ||||
<dependency id="Discord.Net.Labs.Core" version="3.0.0$suffix$" /> | <dependency id="Discord.Net.Labs.Core" version="3.0.0$suffix$" /> | ||||
<dependency id="Discord.Net.Labs.Rest" version="3.0.1$suffix$" /> | <dependency id="Discord.Net.Labs.Rest" version="3.0.1$suffix$" /> | ||||
<dependency id="Discord.Net.Labs.WebSocket" version="3.0.1$suffix$" /> | |||||
<dependency id="Discord.Net.Labs.WebSocket" version="3.0.2$suffix$" /> | |||||
<dependency id="Discord.Net.Labs.Commands" version="3.0.0$suffix$" /> | <dependency id="Discord.Net.Labs.Commands" version="3.0.0$suffix$" /> | ||||
<dependency id="Discord.Net.Labs.Webhook" version="3.0.0$suffix$" /> | <dependency id="Discord.Net.Labs.Webhook" version="3.0.0$suffix$" /> | ||||
</group> | </group> | ||||
<group targetFramework="netstandard2.0"> | <group targetFramework="netstandard2.0"> | ||||
<dependency id="Discord.Net.Labs.Core" version="3.0.0$suffix$" /> | <dependency id="Discord.Net.Labs.Core" version="3.0.0$suffix$" /> | ||||
<dependency id="Discord.Net.Labs.Rest" version="3.0.1$suffix$" /> | <dependency id="Discord.Net.Labs.Rest" version="3.0.1$suffix$" /> | ||||
<dependency id="Discord.Net.Labs.WebSocket" version="3.0.1$suffix$" /> | |||||
<dependency id="Discord.Net.Labs.WebSocket" version="3.0.2$suffix$" /> | |||||
<dependency id="Discord.Net.Labs.Commands" version="3.0.0$suffix$" /> | <dependency id="Discord.Net.Labs.Commands" version="3.0.0$suffix$" /> | ||||
<dependency id="Discord.Net.Labs.Webhook" version="3.0.0$suffix$" /> | <dependency id="Discord.Net.Labs.Webhook" version="3.0.0$suffix$" /> | ||||
</group> | </group> | ||||
<group targetFramework="netstandard2.1"> | <group targetFramework="netstandard2.1"> | ||||
<dependency id="Discord.Net.Labs.Core" version="3.0.0$suffix$" /> | <dependency id="Discord.Net.Labs.Core" version="3.0.0$suffix$" /> | ||||
<dependency id="Discord.Net.Labs.Rest" version="3.0.1$suffix$" /> | <dependency id="Discord.Net.Labs.Rest" version="3.0.1$suffix$" /> | ||||
<dependency id="Discord.Net.Labs.WebSocket" version="3.0.1$suffix$" /> | |||||
<dependency id="Discord.Net.Labs.WebSocket" version="3.0.2$suffix$" /> | |||||
<dependency id="Discord.Net.Labs.Commands" version="3.0.0$suffix$" /> | <dependency id="Discord.Net.Labs.Commands" version="3.0.0$suffix$" /> | ||||
<dependency id="Discord.Net.Labs.Webhook" version="3.0.0$suffix$" /> | <dependency id="Discord.Net.Labs.Webhook" version="3.0.0$suffix$" /> | ||||
</group> | </group> | ||||