Table of Contents

Class GroupUpdate

Namespace
Nyra.Entities
Assembly
Nyra.dll

What a group update changes.

public sealed record GroupUpdate : IEquatable<GroupUpdate>
Inheritance
GroupUpdate
Implements
Inherited Members

Remarks

Every member is optional, the update applies only what is set, membership first, then the track and the player state on every member guild, one guild at a time. A track always replaces what the members play, there is no no-replace for groups. NodeLink only.

Properties

Ducking

Whether every member runs speaking-detection ducking.

[JsonPropertyName("ducking")]
public bool? Ducking { get; init; }

Property Value

bool?

Remarks

NodeLink 3.9.0 answers this member with a 500, so the whole group update fails against that build. The stored configuration survives the failed write.

EndTimeMilliseconds

Where the played track stops, in milliseconds.

[JsonPropertyName("endTime")]
[JsonConverter(typeof(RoundedInt64Converter))]
public long? EndTimeMilliseconds { get; init; }

Property Value

long?

Remarks

Travels with a play when the update carries a track, otherwise the server seeks every member with a track loaded to their current position with this as the marker, members without a track only get the marker.

Fading

The fade chain applied to every member, a sent chain replaces the whole configuration.

[JsonPropertyName("fading")]
public FadingOptions? Fading { get; init; }

Property Value

FadingOptions

Filters

The filters applied to every member, same bounds as a per-player update, the kind gates differ, a volume member is rejected here.

[JsonPropertyName("filters")]
public FilterChain? Filters { get; init; }

Property Value

FilterChain

Remarks

Null leaves the members' filters alone.

LoudnessNormalizer

Whether every member runs the loudness normalizer.

[JsonPropertyName("loudnessNormalizer")]
public bool? LoudnessNormalizer { get; init; }

Property Value

bool?

Paused

Whether every member pauses.

[JsonPropertyName("paused")]
public bool? Paused { get; init; }

Property Value

bool?

Remarks

A null leaves each member's pause state alone.

Players

Membership changes applied before the update, additions first.

[JsonPropertyName("players")]
public GroupMembership? Players { get; init; }

Property Value

GroupMembership

PositionMilliseconds

Where the played track starts, in milliseconds, and, when the update carries no track, the position every member seeks to.

[JsonPropertyName("position")]
[JsonConverter(typeof(RoundedInt64Converter))]
public long? PositionMilliseconds { get; init; }

Property Value

long?

Remarks

The server skips the seek for members with no track loaded (a freshly created member never seeks), members with a track, playing or paused, seek to it.

Track

The track every member plays.

[JsonPropertyName("track")]
[JsonConverter(typeof(GroupTrackConverter))]
public GroupTrack? Track { get; init; }

Property Value

GroupTrack

Remarks

A null leaves the members' tracks alone, use Stop to stop them.

Volume

The playback volume of every member, 0-1000, 100 is the neutral value.

[JsonPropertyName("volume")]
[JsonConverter(typeof(RoundedInt32Converter))]
public int? Volume { get; init; }

Property Value

int?