You can install the package using Composer:
composer require snoeren-development/laravel-discord-webhook-channel
This package requires at least PHP 8.2 and Laravel 10.
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);
}
}
$ composer test
The MIT license. See LICENSE for more information.