def METHOD_NAME(cls, verbose=False):
    bots = {}
    license_key = None
    runtime_conf = get_bots_settings()
    try:
        for bot in runtime_conf:
            if runtime_conf[bot]["module"] == __name__ and runtime_conf[bot]['parameters'].get('autoupdate_cached_database', True):
                license_key = runtime_conf[bot]["parameters"]["license_key"]
                bots[bot] = runtime_conf[bot]["parameters"]["database"]
    except KeyError as e:
        error = f"Database update failed. Your configuration of {bot} is missing key {e}."
        if str(e) == "'license_key'":
            error += "\n"
            error += "Since December 30, 2019 you need to register for a free license key to access GeoLite2 database.\n"
            error += "https://blog.maxmind.com/2019/12/18/significant-changes-to-accessing-and-using-geolite2-databases/"
            sys.exit(error)
        else:
            sys.exit(error)
    if not bots:
        if verbose:
            print(f"Database update skipped. No bots of type {__name__} present in runtime configuration or database update disabled with parameter 'autoupdate_cached_database'.")
        sys.exit(0)
    # we only need to import now, if there are no maxmind_geoip bots, this dependency does not need to be installed
    try:
        import maxminddb
    except ImportError:
        raise MissingDependencyError('maxminddb',
                                     additional_text="Package maxminddb should be present because it "
                                                     "is a dependency for the required geoip2 package.")
    try:
        if verbose:
            print("Downloading the latest database update...")
        session = create_request_session()
        response = session.get("https://download.maxmind.com/app/geoip_download",
                               params={
                                   "license_key": license_key,
                                   "edition_id": "GeoLite2-City",
                                   "suffix": "tar.gz"
                               })
    except requests.exceptions.RequestException as e:
        sys.exit(f"Database update failed. Connection Error: {e}")
    if response.status_code == 401:
        sys.exit("Database update failed. Your license key is invalid.")
    if response.status_code != 200:
        sys.exit("Database update failed. Server responded: {}.\n"
                 "URL: {}".format(response.status_code, response.url))
    database_data = None
    try:
        with tarfile.open(fileobj=io.BytesIO(response.content), mode='r:gz') as archive:
            for member in archive.getmembers():
                if "GeoLite2-City.mmdb" in member.name:
                    database_data = maxminddb.open_database(database=archive.extractfile(member),
                                                            mode=maxminddb.MODE_FD)
                    break
    except maxminddb.InvalidDatabaseError:
        sys.exit("Database update failed. Database file invalid.")
    if not database_data:
        sys.exit("Database update failed. Could not locate file 'GeoLite2-City.mmbd' in the downloaded archive.")
    for database_path in set(bots.values()):
        database_dir = pathlib.Path(database_path).parent
        database_dir.mkdir(parents=True, exist_ok=True)
        with open(database_path, "wb") as database:
            database.write(database_data._buffer)
    if verbose:
        print("Database updated. Reloading affected bots.")
    ctl = IntelMQController()
    for bot in bots.keys():
        ctl.bot_reload(bot)