### Summary

This change to dnf5 is the cause:

https://github.com/rpm-software-management/dnf5/commit/69cc522e7cc8507ede07451fcd065084c85a3293

Potential fix:

```diff
diff --git a/lib/ansible/modules/dnf5.py b/lib/ansible/modules/dnf5.py
index 53dd57d49b..362a9a3d80 100644
--- a/lib/ansible/modules/dnf5.py
+++ b/lib/ansible/modules/dnf5.py
@@ -513,6 +513,8 @@ class Dnf5Module(YumDnf):
         conf.installroot = self.installroot
         conf.use_host_config = True  # needed for installroot
         conf.cacheonly = self.cacheonly
+        if self.download_dir:
+            conf.destdir = self.download_dir
 
         base.setup()
 
@@ -667,7 +669,7 @@ class Dnf5Module(YumDnf):
             if results:
                 msg = "Check mode: No changes made, but would have if not in check mode"
         else:
-            transaction.download(self.download_dir or "")
+            transaction.download()
             if not self.download_only:
                 if not self.disable_gpg_check and not transaction.check_gpg_signatures():
                     self.module.fail_json(
```

I'm unsure if the `if` statement is needed, I didn't test that as of yet.

Also, unclear if we should attempt to support both variants, where `download` accepts the dir, vs not.  I lean towards not worrying with it.


### Issue Type

Bug Report

### Component Name

dnf5

### Ansible Version

```console
$ ansible --version
```


### Configuration

```console
# if using a version older than ansible-core 2.12 you should omit the '-t all'
$ ansible-config dump --only-changed -t all
```


### OS / Environment

fedora37

### Steps to Reproduce

Run dnf5 intg tests

### Expected Results

No traceback

### Actual Results

```console
Traceback (most recent call last):
  File "/root/.ansible/tmp/ansible-tmp-1685024184.2164207-10418-220684455568000/AnsiballZ_dnf5.py", line 133, in <module>
    _ansiballz_main()
  File "/root/.ansible/tmp/ansible-tmp-1685024184.2164207-10418-220684455568000/AnsiballZ_dnf5.py", line 125, in _ansiballz_main
    invoke_module(zipped_mod, temp_path, ANSIBALLZ_PARAMS)
  File "/root/.ansible/tmp/ansible-tmp-1685024184.2164207-10418-220684455568000/AnsiballZ_dnf5.py", line 73, in invoke_module
    runpy.run_module(mod_name='ansible.modules.dnf5', init_globals=dict(_module_fqn='ansible.modules.dnf5', _modlib_path=modlib_path),
  File "<frozen runpy>", line 226, in run_module
  File "<frozen runpy>", line 98, in _run_module_code
  File "<frozen runpy>", line 88, in _run_code
  File "/tmp/ansible_ansible.legacy.dnf5_payload_n4l7o4kv/ansible_ansible.legacy.dnf5_payload.zip/ansible/modules/dnf5.py", line 708, in <module>
  File "/tmp/ansible_ansible.legacy.dnf5_payload_n4l7o4kv/ansible_ansible.legacy.dnf5_payload.zip/ansible/modules/dnf5.py", line 704, in main
  File "/tmp/ansible_ansible.legacy.dnf5_payload_n4l7o4kv/ansible_ansible.legacy.dnf5_payload.zip/ansible/modules/dnf5.py", line 670, in run
TypeError: Transaction.download() takes 1 positional argument but 2 were given
```


### Code of Conduct

- [X] I agree to follow the Ansible Code of Conduct
self.module.exit_json(msg="", results=results, rc=0)
        settings = libdnf5.base.GoalJobSettings()
        settings.group_with_name = True
        if self.bugfix or self.security:
            advisory_query = libdnf5.advisory.AdvisoryQuery(base)
            types = []
            if self.bugfix:
                types.append("bugfix")
            if self.security:
                types.append("security")
            advisory_query.filter_type(types)
            settings.set_advisory_filter(advisory_query)
        goal = libdnf5.base.Goal(base)
        results = []
        if self.names == ["*"] and self.state == "latest":
            goal.add_rpm_upgrade(settings)
        elif self.state in {"install", "present", "latest"}:
            upgrade = self.state == "latest"
            for spec in self.names:
                if is_newer_version_installed(base, spec):
                    if self.allow_downgrade:
                        if upgrade:
                            if is_installed(base, spec):
                                goal.add_upgrade(spec, settings)
                            else:
                                goal.add_install(spec, settings)
                        else:
                            goal.add_install(spec, settings)
                elif is_installed(base, spec):
                    if upgrade: