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] fromdhooksimportWebhookhook=Webhook('url') hook.send("Hello there! I'm a webhook :open_mouth:")You can easily format and send embeds using this library.
Note: Embed objects from discord.py are also compatible with this library.
fromdhooksimportWebhook, Embedhook=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)You can easily send files as shown.
fromdhooksimportWebhook, FilefromioimportBytesIOimportrequestshook=Webhook('url') file=File('path/to/file.png', name='cat.png') # optional name for discordhook.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)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_idhook.channel_idhook.default_namehook.default_avatar_url
You can change the default name and avatar of a webhook easily.
withopen('img.png', 'rb') asf: img=f.read() # byteshook.modify(name='Bob', avatar=img) hook.delete() # webhook deleted permanentlyTo 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.
fromdhooksimportWebhookasyncdefmain(): hook=Webhook.Async('url') awaithook.send('hello') awaithook.modify('bob') awaithook.get_info() awaithook.delete() awaithook.close() # close the client sessionAlternatively you can use an async with block (asynchronous context manager) to automatically close the session once finished.
asyncdefmain(): asyncwithWebhook.Async('url') ashook: awaithook.send('hello')You can find the full API reference here.
This project is licensed under MIT.
Feel free to contribute to this project, a helping hand is always appreciated.

