Webhooks
Tips
Webhooks were only available via a separate module before version 4.15.0, but now they are built into the core addon. Please consider updating your syntax to the new one!
Webhooks are a way to send messages to a channel without a bot. They are useful for sending messages from external services or scripts, as they don't require a bot to be online. You can also use them to send messages with a custom name and avatar, which is not possible with a bot.
There's two main "types" of webhooks in DiSky:
- Webhook Clients: Registered webhooks that you can use to send messages.
 - (Normal) Webhooks: Webhooks retrieved from a channel, you cannot send messages with them.
 
In this page, you'll see how to register your webhooks and send messages with them, but you can see information about managing webhooks in a channel just below.
Webhooks Clients
Register a client
You first need to register a webhook client to use it later. For this, create a webhook in a channel using the following steps:
- Open the settings of your desired channel.
 - Navigate to the integrations tab.
 - Click on Create Webhook.
 - Fill in the name and avatar of the webhook
 - Copy the webhook URL, you'll need it for the next step.
 
Then, you can register the webhook client using the following effect:
Where do I put this code?
The best place is in a on ready section of your bot. That way, it only registers once, and you can directly use the event-bot provided by the section!
# We assume you're in a 'on ready' section here
register webhooks using event-bot named "my_webhook" with url "https://discord.com/api/webhooks/XXXXXX"
A few notes here:
- You must use a loaded bot as "bridge" to register the webhook.
 - The 
nameis the name you'll use to refer to this webhook client later. It's only for DiSky, not for Discord. - The 
urlis the URL you copied earlier, containing both the webhook's ID and token. 
Send a message
The message sending workflow was greatly improved in 4.15.0 compared to the module, as it integrates smoothly with DiSky's existing syntax. For instance, you can directly use a rich message as the message to send!
create a new message and store it in {_msg}:
    set the content of the message to "Hello World!"
    make embed and store it in {_e}:
        set title of embed to "Da first embed"
        set embed color of embed to orange
        set footer of embed to "How lovely is this?"
    add {_e} to the embeds of the message
    make embed and store it in {_e}: #(1)!
        set title of embed to "Oh, and another embed!"
        set embed color of embed to yellow
        set footer of embed to "DiSky is the best :)"
    add {_e} to the embeds of the message
make client "my_webhook" post {_msg} with username "Mister Fish" with avatar url "https://cdn.pfps.gg/pfps/2128-fish-6.png" and store it in {_msg}
Important Note
Only webhook can send multiple embeds in a single message. If you try to send multiple embeds with a bot, it will only send the last one!
The code above will send the following message:
  
Manage Webhooks
Retrieve Webhooks
You can retrieve webhooks, by channels or guilds. You can use this effect:
List Guild's Webhooks
discord command webhooks:
    prefixes: ?
    trigger:
        retrieve webhooks of event-guild and store them in {_webhooks::*}
        add "%size of {_webhooks::*}% webhooks found:" to {_m::*}
        loop {_webhooks::*}:
            add "- %discord name of loop-value% (%discord id of loop-value% in %mention tag of (text channel of loop-value)%)" to {_m::*}
        reply with join {_m::*} with nl
Webhook Properties
Here's a non-exhaustive list of what you can do with a webhook: