Laravel notification driver for Discord.
Requires
- php: >=5.6.4
- guzzlehttp/guzzle: ^6.2
- illuminate/console: 5.1.*|5.2.*|5.3.*
- illuminate/notifications: 5.3.*
- illuminate/queue: 5.1.*|5.2.*|5.3.*
- illuminate/support: 5.1.*|5.2.*|5.3.*
- textalk/websocket: 1.0.*
Requires (Dev)
- laravel/framework: 5.1.*|5.2.*|5.3.*
- mockery/mockery: ^0.9.5
- orchestra/testbench: 3.1.*|3.2.*|3.3.*
- phpunit/phpunit: 4.*
This package is not auto-updated.
Last update: 2024-11-29 20:58:27 UTC
README
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 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
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
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}**!"); } }
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.