-
Notifications
You must be signed in to change notification settings - Fork 0
Compatibility
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(...), andcog_load/cog_unloadas coroutines (added in discord.py 2.0); -
setup_hookchaining 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, andAutoShardedClient.shards.
All of these are part of discord.py 2.x, so any 2.4+ bot works with Argus(bot)
unchanged.
discord.py has several forks (Pycord, Nextcord, disnake, and others). They all
ship the same discord import name, which has two consequences:
-
Only one can be installed at a time.
pip install argus-dpydepends ondiscord.py, so it pulls upstream discord.py. If you have a fork installed under thediscordname, installing Argus will conflict; pick one. - 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 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).
-
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.envsopython -m argus.fleetjust works afterargus-fleet init. Optional; the generated composeenv_file/ systemdEnvironmentFileworks 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).