[Feature] Components V2 (#3065)

* oh well. at least it runs

* well that's some breakings

* all the models (i think)

* barebones builder impl

* commit

* initial take on `WithX` component builder design

* actually usable stuff now

* few more changes

* fixes, changes, syntax sugar

* rework message flags + auto add `ComponentsV2`

* apparently it's also nullable

* fix build

* webhook component supports + builder validations + some xmldoc

* `ResolvedUnfurledMediaItem` + fix missing accessory on sections

* missing xmldoc

* fix modal + whatever change

* yeet unused dep
This commit is contained in:
Mihail Gribkov
2025-04-26 23:40:03 +03:00
committed by GitHub
parent 5e4a844adf
commit ba78e0c1f0
102 changed files with 2852 additions and 692 deletions

View File

@@ -1,12 +1,13 @@
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using System;
using System.ComponentModel;
namespace Discord.Net.Converters
{
internal class MessageComponentConverter : JsonConverter
{
public static MessageComponentConverter Instance => new MessageComponentConverter();
public static MessageComponentConverter Instance => new ();
public override bool CanRead => true;
public override bool CanWrite => false;
@@ -39,6 +40,27 @@ namespace Discord.Net.Converters
case ComponentType.TextInput:
messageComponent = new API.TextInputComponent();
break;
case ComponentType.TextDisplay:
messageComponent = new API.TextDisplayComponent();
break;
case ComponentType.Thumbnail:
messageComponent = new API.ThumbnailComponent();
break;
case ComponentType.Section:
messageComponent = new API.SectionComponent();
break;
case ComponentType.MediaGallery:
messageComponent = new API.MediaGalleryComponent();
break;
case ComponentType.Separator:
messageComponent = new API.SeparatorComponent();
break;
case ComponentType.File:
messageComponent = new API.FileComponent();
break;
case ComponentType.Container:
messageComponent = new API.ContainerComponent();
break;
}
serializer.Populate(jsonObject.CreateReader(), messageComponent);
return messageComponent;