create method

  1. @override
Future<Member> create(
  1. covariant MemberBuilder builder
)
override

Create a new instance of the type of this manager.

Implementers should ensure this method updates the cache.

Implementation

@override
Future<Member> create(MemberBuilder builder) async {
  final route = HttpRoute()
    ..guilds(id: guildId.toString())
    ..members(id: builder.userId.toString());
  final request = BasicRequest(route, method: 'PUT', body: jsonEncode(builder.build()));

  final response = await client.httpHandler.executeSafe(request);
  if (response.statusCode == 204) {
    throw MemberAlreadyExistsException(guildId, builder.userId);
  }

  final member = parse(response.jsonBody as Map<String, Object?>, userId: builder.userId);

  client.updateCacheWith(member);
  return member;
}