laravel54-notification-channels/discord
Discord notification channel for Laravel 5.3
This package makes it easy to send notifications using the Discord bot API with Laravel 5.3.
Contents
Installation
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,
],
Setting up your Discord bot
-
Click the
Create a Bot Userbutton on your Discord application. -
Paste your bot's API token, found under
App Bot User, in yourservices.phpconfig 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
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:
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
userstable has two discord columns:discord_useranddiscord_channel- When a user updates their Discord user ID (
discord_user), generate and save a channel ID (discord_channel)- Return the user's
discord_channelin therouteNotificationForDiscordmethod on the User modelYou can generate direct message channels by using the
getPrivateChannelmethod 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}**!");
}
}
Available Message methods
body(string): Set the content of the message. (Supports basic markdown)embed(array): Set the embedded content. (View embed structure)
Changelog
Please see CHANGELOG for more information what has changed recently.
Testing
$ composer test
Security
If you discover any security related issues, please email cs475x@icloud.com instead of using the issue tracker.
Contributing
Please see CONTRIBUTING for details.
Credits
License
The MIT License (MIT). Please see LICENSE for more information.