33 lines
1.1 KiB
C#
33 lines
1.1 KiB
C#
using System.Text.Json.Serialization;
|
|
using Lagrange.Core.Message;
|
|
using Lagrange.Core.Message.Entity;
|
|
|
|
namespace Lagrange.OneBot.Message.Entity;
|
|
|
|
[Serializable]
|
|
public partial class FaceSegment(int id)
|
|
{
|
|
public FaceSegment() : this(0) { }
|
|
|
|
[JsonPropertyName("id")] [CQProperty] public string Id { get; set; } = id.ToString();
|
|
|
|
[JsonPropertyName("large")] [CQProperty] public bool? IsLarge { get; set; }
|
|
|
|
}
|
|
|
|
[SegmentSubscriber(typeof(FaceEntity), "face")]
|
|
public partial class FaceSegment : SegmentBase
|
|
{
|
|
private static readonly ushort[] Excluded = [358, 359];
|
|
|
|
public override void Build(MessageBuilder builder, SegmentBase segment)
|
|
{
|
|
if (segment is FaceSegment faceSegment) builder.Face(ushort.Parse(faceSegment.Id), faceSegment.IsLarge ?? false);
|
|
}
|
|
|
|
public override SegmentBase? FromEntity(MessageChain chain, IMessageEntity entity)
|
|
{
|
|
if (entity is not FaceEntity faceEntity) throw new ArgumentException("Invalid entity type.");
|
|
return Excluded.Contains(faceEntity.FaceId) ? null : new FaceSegment(faceEntity.FaceId);
|
|
}
|
|
} |