Browse Source

Add methods to create builders from messages

pull/1923/head
quin lynch 3 years ago
parent
commit
87350f8f0b
3 changed files with 48 additions and 7 deletions
  1. +41
    -0
      src/Discord.Net.Core/Entities/Interactions/Message Components/ComponentBuilder.cs
  2. +3
    -3
      src/Discord.Net.WebSocket/Discord.Net.WebSocket.csproj
  3. +4
    -4
      src/Discord.Net/Discord.Net.nuspec

+ 41
- 0
src/Discord.Net.Core/Entities/Interactions/Message Components/ComponentBuilder.cs View File

@@ -45,6 +45,47 @@ namespace Discord

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>
/// 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.


+ 3
- 3
src/Discord.Net.WebSocket/Discord.Net.WebSocket.csproj View File

@@ -8,7 +8,7 @@
<TargetFrameworks Condition=" '$(OS)' == 'Windows_NT' ">net461;netstandard2.0;netstandard2.1</TargetFrameworks>
<TargetFrameworks Condition=" '$(OS)' != 'Windows_NT' ">netstandard2.0;netstandard2.1</TargetFrameworks>
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
<Version>3.0.1</Version>
<Version>3.0.2</Version>
<RepositoryUrl>https://github.com/Discord-Net-Labs/Discord.Net-Labs</RepositoryUrl>
<PackageProjectUrl>https://github.com/Discord-Net-Labs/Discord.Net-Labs</PackageProjectUrl>
<PackageIcon>Temporary.png</PackageIcon>
@@ -16,8 +16,8 @@
</PropertyGroup>
<PropertyGroup>
<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 Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
<DefineConstants>TRACE</DefineConstants>


+ 4
- 4
src/Discord.Net/Discord.Net.nuspec View File

@@ -2,7 +2,7 @@
<package xmlns="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd">
<metadata>
<id>Discord.Net.Labs</id>
<version>3.0.1$suffix$</version>
<version>3.0.2$suffix$</version>
<title>Discord.Net Labs</title>
<authors>Discord.Net Contributors</authors>
<owners>quinchs</owners>
@@ -16,21 +16,21 @@
<group targetFramework="net461">
<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.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.Webhook" version="3.0.0$suffix$" />
</group>
<group targetFramework="netstandard2.0">
<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.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.Webhook" version="3.0.0$suffix$" />
</group>
<group targetFramework="netstandard2.1">
<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.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.Webhook" version="3.0.0$suffix$" />
</group>


Loading…
Cancel
Save