spatie / laravel-discord-alerts by spatie

Send a message to Discord
134,264
113
6
Package Data
Maintainer Username: spatie
Maintainer Contact: rias@spatie.be (Rias Van der Veken)
Package Create Date: 2022-01-21
Package Last Update: 2024-07-08
Home Page: https://spatie.be/open-source
Language: PHP
License: MIT
Last Refreshed: 2024-12-15 15:23:19
Package Statistics
Total Downloads: 134,264
Monthly Downloads: 13,462
Daily Downloads: 158
Total Stars: 113
Total Watchers: 6
Total Forks: 21
Total Open Issues: 0

Quickly send a message to Discord

Latest Version on Packagist run-tests PHPStan Check & fix styling Total Downloads

This package can quickly send alerts to Discord. You can use this to notify yourself of any noteworthy events happening in your app.

Want to quickly send alerts to Slack? Then check out laravel-slack-alerts.

use Spatie\DiscordAlerts\Facades\DiscordAlert;

DiscordAlert::message("You have a new subscriber to the {$newsletter->name} newsletter!");

Under the hood, a job is used to communicate with Discord. This prevents your app from failing in case Discord is down.

Support us

We invest a lot of resources into creating best in class open source packages. You can support us by buying one of our paid products.

We highly appreciate you sending us a postcard from your hometown, mentioning which of our package(s) you are using. You'll find our address on our contact page. We publish all received postcards on our virtual postcard wall.

Installation

You can install the package via composer:

composer require spatie/laravel-discord-alerts

You can set a DISCORD_ALERT_WEBHOOK env variable containing a valid Discord webhook URL. You can learn how to get a webhook URL in the Discord API docs.

Alternatively, you can publish the config file with:

php artisan vendor:publish --tag="discord-alerts-config"

This is the contents of the published config file:

return [
    /*
     * The webhook URLs that we'll use to send a message to Discord.
     */
    'webhook_urls' => [
        'default' => env('DISCORD_ALERT_WEBHOOK'),
    ],

    /*
     * This job will send the message to Discord. You can extend this
     * job to set timeouts, retries, etc...
     */
    'job' => Spatie\DiscordAlerts\Jobs\SendToDiscordChannelJob::class,
];

Usage

To send a message to Discord, simply call DiscordAlert::message() and pass it any message you want.

DiscordAlert::message("You have a new subscriber to the {$newsletter->name} newsletter!");

Sending an embed

To send an embed you can call the same function as above. Just add the embed as a second array as following:

DiscordAlert::message("You have a new subscriber to the {$newsletter->name} newsletter!", [
    [
        'title' => 'My title',
        'description' => 'My description',
        'color' => '#E77625',
        'author' => [
            'name' => 'Spatie',
            'url' => 'https://spatie.be/'
        ]    
    ]
]);

You can also send multiple embeds as one message. Just be careful that you don't hit the limit of Discord.

Using multiple webhooks

You can also use an alternative webhook, by specify extra ones in the config file.

// in config/discord-alerts.php

'webhook_urls' => [
    'default' => 'https://hooks.discord.com/services/XXXXXX',
    'marketing' => 'https://hooks.discord.com/services/YYYYYY',
],

The webhook to be used can be chosen using the to function.

use Spatie\DiscordAlerts\Facades\DiscordAlert;

DiscordAlert::to('marketing')->message("You have a new subscriber to the {$newsletter->name} newsletter!");

Using a custom webhooks

The to function also supports custom webhook urls.

use Spatie\DiscordAlerts\Facades\DiscordAlert;

DiscordAlert::to('https://custom-url.com')->message("You have a new subscriber to the {$newsletter->name} newsletter!");

Formatting

Markdown

You can format your messages with markup. Learn how in the Discord API docs.

use Spatie\DiscordAlerts\Facades\DiscordAlert;

DiscordAlert::message("A message **with some bold statements** and _some italicized text_.");

Emoji's

You can use the same emoji codes as in Discord. This means custom emoji's are also supported.

use Spatie\DiscordAlerts\Facades\DiscordAlert;

DiscordAlert::message(":smile: :custom-code:");

Testing

composer test

Changelog

Please see CHANGELOG for more information on what has changed recently.

Contributing

Please see CONTRIBUTING for details.

Security Vulnerabilities

Please review our security policy on how to report security vulnerabilities.

Credits

License

The MIT License (MIT). Please see License File for more information.