Discord Webhooks
Installation
To install the library simply use pip.
pip install dhooks
If you would also like to get the latest version of dhooks from GitHub, build docs, run tests or run examples, you may want to install dhooks with the optional extended dependencies.
git clone https://github.com/kyb3r/dhooks.git
cd dhooks
pip install .[tests,docs,examples]
Quick Start
Sending Messages:
from dhooks import Webhook
hook = Webhook('url')
hook.send("Hello there! I'm a webhook :open_mouth:")
Discord Embeds:
You can easily format and send embeds using this library.
Note: Embed
objects from discord.py
are also compatible with this library.
from dhooks import Webhook, Embed
hook = Webhook('url')
embed = Embed(
description='This is the **description** of the embed! :smiley:',
color=0x5CDBF0,
timestamp='now' # sets the timestamp to current time
)
image1 = 'https://i.imgur.com/rdm3W9t.png'
image2 = 'https://i.imgur.com/f1LOr4q.png'
embed.set_author(name='Author Goes Here', icon_url=image1)
embed.add_field(name='Test Field', value='Value of the field :open_mouth:')
embed.add_field(name='Another Field', value='1234 :smile:')
embed.set_footer(text='Here is my footer text', icon_url=image1)
embed.set_thumbnail(image1)
embed.set_image(image2)
hook.send(embed=embed)
Sending Files:
You can easily send files as shown.
from dhooks import Webhook, File
from io import BytesIO
import requests
hook = Webhook('url')
file = File('path/to/file.png', name='cat.png') # optional name for discord
hook.send('Look at this:', file=file)
You can also pass a file-like object:
response = requests.get('https://i.imgur.com/rdm3W9t.png')
file = File(BytesIO(response.content), name='wow.png')
hook.send('Another one:', file=file)
Get Webhook Info:
You can get some basic information related to the webhook through Discord's API.
hook.get_info()
The following attributes will be populated with data from discord:
hook.guild_id
hook.channel_id
hook.default_name
hook.default_avatar_url
Modify and Delete Webhooks:
You can change the default name and avatar of a webhook easily.
with open('img.png', 'rb') as f:
img = f.read() # bytes
hook.modify(name='Bob', avatar=img)
hook.delete() # webhook deleted permanently
Asynchronous Usage:
To asynchronously make requests using aiohttp
, simply use Webhook.Async
to create the object. An example is as follows. Simply use the await
keyword when calling API methods.
from dhooks import Webhook
async def main():
hook = Webhook.Async('url')
await hook.send('hello')
await hook.modify('bob')
await hook.get_info()
await hook.delete()
await hook.close() # close the client session
Alternatively you can use an async with
block (asynchronous context manager) to automatically close the session once finished.
async def main():
async with Webhook.Async('url') as hook:
await hook.send('hello')
Documentation
You can find the full API reference here.
License
This project is licensed under MIT.
Contributing
Feel free to contribute to this project, a helping hand is always appreciated.