Skip to content

Compatibility

AstorisTheBrave edited this page Jun 20, 2026 · 2 revisions

Compatibility

Supported: discord.py 2.x

Argus targets upstream discord.py 2.4 or newer on Python 3.10 to 3.13. It relies on discord.py 2.x semantics:

  • the asynchronous cog lifecycle: await bot.add_cog(...), and cog_load / cog_unload as coroutines (added in discord.py 2.0);
  • setup_hook chaining to add the cog once the loop is running;
  • standard listeners (on_interaction, on_app_command_completion, on_command_completion, on_command_error, on_socket_event_type, the shard events), CommandTree.on_error, Client.latencies, and AutoShardedClient.shards.

All of these are part of discord.py 2.x, so any 2.4+ bot works with Argus(bot) unchanged.

Forks

discord.py has several forks (Pycord, Nextcord, disnake, and others). They all ship the same discord import name, which has two consequences:

  1. Only one can be installed at a time. pip install argus-dpy depends on discord.py, so it pulls upstream discord.py. If you have a fork installed under the discord name, installing Argus will conflict; pick one.
  2. Compatibility depends on whether the fork matches discord.py 2.x's async cog API. Argus is only tested against upstream discord.py.
Fork Status Notes
discord.py (upstream) Supported The target.
Nextcord, disnake Untested Track discord.py's async cog API closely; may work but are not part of CI.
Pycord Not supported unmodified Pycord uses a synchronous add_cog and a non-coroutine cog_unload, which differ from the async lifecycle Argus drives.

If you maintain a fork and want first-class support, open an issue. The integration surface is small and documented in Architecture and Invariants.

Python

Python 3.10, 3.11, 3.12, and 3.13 are tested in CI. Older Pythons are not supported (Argus uses 3.10+ typing and standard-library features).

Optional extras

  • argus-dpy[otlp] - OpenTelemetry push (see OTLP).
  • argus-dpy[clickhouse] - the per-guild analytical path (see History and ClickHouse).
  • argus-dpy[fleet] - quality-of-life for the Fleet control plane: autoload a .env so python -m argus.fleet just works after argus-fleet init. Optional; the generated compose env_file / systemd EnvironmentFile works without it.

Both are optional; the core SDK and the Fleet control plane need neither (the fleet's Prometheus source uses aiohttp, already a core dependency).

Clone this wiki locally