This package makes it easy to send notifications using the Discord bot API with Laravel 5.3.
You can install the package via composer:
composer require laravel-notification-channels/discord
Next, you must load the service provider:
// config/app.php
'providers' => [
// ...
NotificationChannels\Discord\DiscordServiceProvider::class,
],
-
Click the
Create a Bot User
button on your Discord application. -
Paste your bot's API token, found under
App Bot User
, in yourservices.php
config file:// config/services.php 'discord' => [ 'token' => 'YOUR_API_TOKEN', ],
-
Add the bot to your server and identify it by running the artisan command:
php artisan discord:setup
In every model you wish to be notifiable via Discord, you must add a channel ID property to that model accessible through a routeNotificationForDiscord
method:
class Guild extends Eloquent
{
use Notifiable;
public function routeNotificationForDiscord()
{
return $this->discord_channel;
}
}
NOTE: Discord handles direct messages as though they are a regular channel. If you wish to allow users to receive direct messages from your bot, you will need to create a private channel with that user. An example workflow may look like the following:
- Your
users
table has two discord columns:discord_user
anddiscord_channel
- When a user updates their Discord user ID (
discord_user
), generate and save a channel ID (discord_channel
)- Return the user's
discord_channel
in therouteNotificationForDiscord
method on the User modelYou can generate direct message channels by using the
getPrivateChannel
method inNotificationChannels\Discord\Discord
:use NotificationChannels\Discord\Discord; // ... class UserDiscordSettingsController { public function store(Request $request) { $user = $request->input('discord_user'); $channel = app(Discord::class)->getPrivateChannel($user); Auth::user()->update([ 'discord_user' => $user, 'discord_channel' => $channel, ]); } }
You may now tell Laravel to send notifications to Discord channels in the via
method:
// ...
use NotificationChannels\Discord\DiscordChannel;
use NotificationChannels\Discord\DiscordMessage;
class GameChallengeNotification extends Notification
{
public $challenger;
public $game;
public function __construct(Guild $challenger, Game $game)
{
$this->challenger = $challenger;
$this->game = $game;
}
public function via($notifiable)
{
return [DiscordChannel::class];
}
public function toDiscord($notifiable)
{
return DiscordMessage::create("You have been challenged to a game of *{$this->game->name}* by **{$this->challenger->name}**!");
}
}
body(string)
: Set the content of the message. (Supports basic markdown)embed(array)
: Set the embedded content. (View embed structure)
Please see CHANGELOG for more information what has changed recently.
$ composer test
If you discover any security related issues, please email [email protected] instead of using the issue tracker.
Please see CONTRIBUTING for details.
The MIT License (MIT). Please see LICENSE for more information.