updatePlayer method

Future<Player> updatePlayer(
  1. String sessionId,
  2. String guildId,
  3. PlayerUpdate update, {
  4. bool noReplace = false,
})

Update player state

Implementation

Future<Player> updatePlayer(
  String sessionId,
  String guildId,
  PlayerUpdate update, {
  bool noReplace = false,
}) async {
  LavalinkLogger.debug(
    'Updating player for guild $guildId',
    tag: 'REST',
  );

  try {
    final uri = Uri.parse(
      '$baseUrl/v4/sessions/$sessionId/players/$guildId',
    ).replace(queryParameters: {'noReplace': noReplace.toString()});

    final request = await _httpClient.patchUrl(uri);
    _addHeaders(request);
    request.headers.set('Content-Type', 'application/json');
    request.write(jsonEncode(update.toJson()));

    final response = await request.close();
    final responseBody = await _readResponse(response);

    if (response.statusCode != 200) {
      throw LavalinkException(
        'Failed to update player: ${response.statusCode}',
        statusCode: response.statusCode,
      );
    }

    final json = jsonDecode(responseBody) as Map<String, dynamic>;
    return Player.fromJson(json);
  } catch (e) {
    if (e is LavalinkException) rethrow;
    throw LavalinkException('Failed to update player: $e', cause: e);
  }
}