Skip to content
Discord notification channel for Laravel
Branch: master
Clone or download
Latest commit 3e19ef6 Sep 24, 2019
Type Name Latest commit message Commit time
Failed to load latest commit information.
src Clarify usage of `getPrivateChannel` Jun 12, 2019
tests Remove old properties from gateway payload as well as authentication … Jun 9, 2019
.editorconfig initial commit Aug 16, 2016
.gitattributes initial commit Aug 16, 2016
.gitignore initial commit Aug 16, 2016
.scrutinizer.yml initial commit Aug 16, 2016
.styleci.yml Remove deprecated StyleCI flag Sep 7, 2018
.travis.yml Laravel 6.0 Support (#28) Sep 15, 2019 Not sure how or when these were made executable, but alright Aug 15, 2017 initial commit Aug 16, 2016 Update readme Sep 24, 2019
composer.json Laravel 6.0 Support (#28) Sep 15, 2019
phpunit.xml.dist initial commit Aug 16, 2016

Discord notification channel for Laravel 6.0+

Latest Version on Packagist Software License Build Status StyleCI Quality Score Code Coverage Total Downloads

This package makes it easy to send notifications using the Discord bot API with Laravel.



You can install the package via composer:

composer require laravel-notification-channels/discord

Next, you must load the service provider:

// config/app.php
'providers' => [
    // ...

Setting up your Discord bot

  1. Create a Discord application.

  2. Click the Create a Bot User button on your Discord application.

  3. Paste your bot's API token, found under App Bot User, in your services.php config file:

    // config/services.php
    'discord' => [
        'token' => 'YOUR_API_TOKEN',
  4. 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:

  1. Your users table has two discord columns: discord_user_id and discord_private_channel_id
  2. When a user updates their Discord user ID (discord_user_id), generate and save a private channel ID (discord_private_channel_id)
  3. Return the user's discord_private_channel_id in the routeNotificationForDiscord method on the User model

You can generate direct message channels by using the getPrivateChannel method in the NotificationChannels\Discord\Discord class

use NotificationChannels\Discord\Discord;

class UserDiscordSettingsController
    public function store(Request $request)
        $userId = $request->input('discord_user_id');
        $channelId = app(Discord::class)->getPrivateChannel($userId);

            'discord_user_id' => $userId,
            'discord_private_channel_id' => $channelId,

Please take note that the getPrivateChannel method only accepts Discord's snowflake IDs. There is no API route provided by Discord to lookup a user's ID by their name and tag, and the process for copying and pasting a user ID can be confusing to some users. Because of this, it is recommended to add the option for users to connect their Discord account to their account within your application either by logging in with Discord or linking it to their pre-existing account.

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


Please see CHANGELOG for more information what has changed recently.


$ composer test


If you discover any security related issues, please email instead of using the issue tracker.


Please see CONTRIBUTING for details.



The MIT License (MIT). Please see LICENSE for more information.

You can’t perform that action at this time.