Skip to content

EthanC/Clyde

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

17 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Clyde

Python GitHub Workflow Status PyPI Downloads Coverage Report

Clyde is a modern, type-hinted Python library for seamless interaction with the Discord Webhook API.

It's lightweight, developer-friendly, and supports advanced features like Components and Embeds.

Features

  • Fully type-hinted for an excellent developer experience
  • Input validation powered by Pydantic
  • Support for all Webhook-compatible Components
  • Granular customization of rich Embeds
  • Helpers for Discord-flavored markdown, including timestamps
  • Compatible with both synchronous and asynchronous HTTP requests

Getting Started

Installation

Important

Clyde requires Python 3.13 or later.

Install with uv (recommended):

uv add discord-clyde

Alternatively, install with pip:

pip install discord-clyde

Examples

Tip

Take the examples below and copy/paste them into your project to get started in seconds.

Send a standard Message

from clyde import Webhook

relay: Webhook = Webhook(url="https://discord.com/api/webhooks/00000/XXXXXXXXXX")

relay.set_avatar_url("https://i.imgur.com/RzkhQgZ.png")
relay.set_username("Heisenberg")

relay.set_content("[Clyde](https://github.com/EthanC/Clyde) says hi!")

relay.execute()

Preview

Send a Message with Components

from clyde import Webhook
from clyde.components import ActionRow, LinkButton, TextDisplay

relay: Webhook = Webhook(url="https://discord.com/api/webhooks/00000/XXXXXXXXXX")

relay.set_avatar_url("https://i.imgur.com/BpcKmVO.png")
relay.set_username("TARS")

greeting: TextDisplay = TextDisplay(content="[Clyde](https://github.com/EthanC/Clyde) says hi!")

actions: ActionRow = ActionRow()
repository: LinkButton = LinkButton()

repository.set_label("Try Clyde")
repository.set_url("https://github.com/EthanC/Clyde")

actions.add_component(repository)
relay.add_component(greeting)
relay.add_component(actions)
relay.execute()

Preview

Send a Message with an Embed

from clyde import Embed, Webhook


relay: Webhook = Webhook(url="https://discord.com/api/webhooks/00000/XXXXXXXXXX")

relay.set_avatar_url("https://i.imgur.com/QaTHttz.png")
relay.set_username("Shady")

rich: Embed = Embed()

rich.set_description("[Clyde](https://github.com/EthanC/Clyde) says hi!")
rich.set_color("#5865F2")

relay.add_embed(rich)
relay.execute()

Preview

Releases

Clyde loosely follows Semantic Versioning for consistent, predictable releases.

Contributing

Contributions are welcome—whether it’s fixing bugs or adding new features.

Acknowledgements

The Clyde character and Discord brand assets are owned by Discord.

This project is not affiliated with or endorsed by Discord in any way.