registerServer method

  1. @override
Future<void> registerServer(
  1. Bot bot,
  2. Server server
)
override

Implementation

@override
Future<void> registerServer(Bot bot, Server server) async {
  final List<CommandBuilder> guildCommands =
      _getContext(CommandContextType.server);
  final payload = _serializeCommand(guildCommands);

  final req = Request.json(
      endpoint: '/applications/${bot.id}/guilds/${server.id}/commands',
      body: payload);

  final response = await _dataStore.client.put(req);
  if (response.statusCode == 400) {
    final error = Map<String, dynamic>.from(response.body['errors'] as Map<dynamic, dynamic>)
        .values
        .firstOrNull?['name'];

    final errors = List.from(error?['_errors'] as Iterable<dynamic>? ?? []).firstOrNull;

    throw InvalidCommandException('${errors['code']}: ${errors['message']}');
  }
}