Build rich Discord Webhook API interactions with a typed Python API.
Clyde supports plain messages, Components, and rich Embeds for the Discord Webhook API. It validates each payload and sends it through synchronous or asynchronous HTTP methods.
Features
- Type annotations across the public API
- Input type and field validation with msgspec
- Plain content, every webhook-compatible Discord Component, and field-level Embed controls
- Helpers for Discord-flavored Markdown and timestamps
- Synchronous and asynchronous HTTP requests through niquests
- Automatic rate-limit retries with optional timeouts, retry limits, and delivery budgets
- API documentation generated with Zensical
Installation
Add Clyde to a uv project:
uv add discord-clyde
Examples
Plain Message
from clyde import Webhook
Webhook(
url="https://discord.com/api/webhooks/00000/XXXXXXXXXX",
avatar_url="https://i.imgur.com/RzkhQgZ.png",
username="Heisenberg",
content="[Clyde](https://github.com/EthanC/Clyde) says hi!",
).execute()
Message With Components
from clyde import Webhook
from clyde.components import ActionRow, LinkButton, TextDisplay
webhook = Webhook(
url="https://discord.com/api/webhooks/00000/XXXXXXXXXX",
avatar_url="https://i.imgur.com/BpcKmVO.png",
username="TARS",
)
webhook.add_component(
[
TextDisplay(content="[Clyde](https://github.com/EthanC/Clyde) says hi!"),
ActionRow(
components=[
LinkButton(label="Try Clyde", url="https://github.com/EthanC/Clyde")
]
),
]
).execute()
Message With an Embed
from clyde import Embed, Webhook
Webhook(
url="https://discord.com/api/webhooks/00000/XXXXXXXXXX",
avatar_url="https://i.imgur.com/QaTHttz.png",
username="Shady",
embeds=[
Embed(
description="[Clyde](https://github.com/EthanC/Clyde) says hi!",
color="#5865F2",
)
],
).execute()
Releases
Clyde loosely follows Semantic Versioning.
Contributing
Bug fixes and new features are welcome. Read the contribution guide before opening a pull request. Known bugs and feature requests are tracked in GitHub Issues.
Acknowledgments
Discord owns the Clyde character and Discord brand assets. This project is not affiliated with or endorsed by Discord.
Metadata
Release files for discord-clyde 1.2.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| discord_clyde-1.2.0.tar.gz | 7.9 MB | Without provenance | Details for discord_clyde-1.2.0.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| discord_clyde-1.2.0-py3-none-any.whl | Python 3 | none | any | Details for discord_clyde-1.2.0-py3-none-any.whl |
Total release size: 8.0 MB
Release files / discord_clyde-1.2.0.tar.gz
| Download URL | discord_clyde-1.2.0.tar.gz |
|---|---|
| Size | 7.9 MB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
892ba2627efbd1a1689981528fa0b08f895e4c19132eeb8541040fca65a47281
|
|
BLAKE2b-256 checksum How to use checksums |
e661b808c0eaa8789fe60f012df7abbd0d811936ecf0403373e01c28039576ed
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.12.19 {"installer":{"name":"uv","version":"0.12.19","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":null,"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|
Release files / discord_clyde-1.2.0-py3-none-any.whl
| Download URL | discord_clyde-1.2.0-py3-none-any.whl |
|---|---|
| Size | 56.2 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
074a3dd916b97aaf98a374fe4eb71fd6afdb580587673cc47042439491ad68c7
|
|
BLAKE2b-256 checksum How to use checksums |
b738e869e019d00297368c3273283663d728d3421e20edaca95e459b925f4760
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.12.19 {"installer":{"name":"uv","version":"0.12.19","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":null,"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|
Security for discord-clyde 1.2.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.