Discord notification channel for Laravel 5.3
, (*1)
This package makes it easy to send notifications using the Discord bot API with Laravel 5.3., (*2)
Contents
Installation
You can install the package via composer:, (*3)
composer require laravel-notification-channels/discord
Next, you must load the service provider:, (*4)
// config/app.php
'providers' => [
// ...
NotificationChannels\Discord\DiscordServiceProvider::class,
],
Setting up your Discord bot
- Create a Discord application.
- Click the
Create a Bot User button on your Discord application.
-
Paste your bot's API token, found under App Bot User, in your services.php config file:, (*5)
// config/services.php
'discord' => [
'token' => 'YOUR_API_TOKEN',
],
-
Add the bot to your server and identify it by running the artisan command:, (*6)
php artisan discord:setup
Usage
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:, (*7)
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:, (*8)
- Your
users table has two discord columns: discord_user and discord_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 the routeNotificationForDiscord method on the User model
You can generate direct message channels by using the getPrivateChannel method in NotificationChannels\Discord\Discord:, (*9)
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:, (*10)
// ...
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}**!");
}
}
Available Message methods
Changelog
Please see CHANGELOG for more information what has changed recently., (*11)
Testing
$ composer test
Security
If you discover any security related issues, please email cs475x@icloud.com instead of using the issue tracker., (*12)
Contributing
Please see CONTRIBUTING for details., (*13)
Credits
License
The MIT License (MIT). Please see LICENSE for more information., (*14)