An (a)sync wrapper for discord webhooks
Project description
Discord Webhooks
Installation
To install the library simply use pipenv (or pip, of course).
pipenv install dhooks
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=0x1e0f3,
timestamp=True # 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(embeds=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.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.