Skip to content

snoeren-development/laravel-discord-webhook-channel

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

79 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Laravel Discord Webhook Channel

Latest version on Packagist Software License Build status Downloads

Installation

You can install the package using Composer:

composer require snoeren-development/laravel-discord-webhook-channel

Requirements

This package requires at least PHP 8.2 and Laravel 10.

Usage

In every notifiable model you wish to notify via Discord, you need to add the routeNotificationForDiscord method;

use Illuminate\Database\Eloquent\Model;
use Illuminate\Notifications\Notifiable;

class User extends Model
{
    use Notifiable;

    /**
     * Route the notification for Discord.
     *
     * @return string
     */
    public function routeNotificationForDiscord(): string
    {
        return $this->discord_webhook;
    }
}

The webhook URL can be created and retrieved via the Discord channel server Webhooks settings. The notification needs the full URL which looks like

https://discordapp.com/api/webhooks/1234567890123456789/1Px6cK9-9346g0CbOYArYjr1jj6X9rvRcCpRi3s7HePN0POeCSvuF1Iagb-Wjiq78BnT

You may now send notifications through Laravel to Discord webhooks using the via method.

use SnoerenDevelopment\DiscordWebhook\DiscordMessage;
use SnoerenDevelopment\DiscordWebhook\DiscordWebhookChannel;

class DiscordNotification extends Notification
{
    /**
     * Get the notification's delivery channels.
     *
     * @param  mixed $notifiable The notifiable model.
     * @return array
     */
    public function via($notifiable)
    {
        return [DiscordWebhookChannel::class];
    }

    /**
     * Get the Discord representation of the notification.
     *
     * @param  mixed $notifiable The notifiable model.
     * @return \SnoerenDevelopment\DiscordWebhook\DiscordMessage
     */
    public function toDiscord($notifiable): DiscordMessage
    {
        return DiscordMessage::create()
            ->username('My Laravel App')
            ->content('The message body.')
            ->avatar('https://domain.com/avatar.jpg')
            ->tts(false);
    }
}

Testing

$ composer test

Credits

License

The MIT license. See LICENSE for more information.