2017 © Pedro Peláez
 

library discord

Laravel notification driver for Discord.

image

laravel54-notification-channels/discord

Laravel notification driver for Discord.

  • Sunday, August 20, 2017
  • by BennySama
  • Repository
  • 0 Watchers
  • 0 Stars
  • 35 Installations
  • PHP
  • 0 Dependents
  • 0 Suggesters
  • 13 Forks
  • 0 Open issues
  • 3 Versions
  • 0 % Grown

The README.md

Discord notification channel for Laravel 5.3

Latest Version on Packagist Software License Build Status StyleCI SensioLabsInsight Quality Score Code Coverage Total Downloads, (*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

  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:, (*5)

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

  1. Your users table has two discord columns: discord_user and discord_channel
  2. When a user updates their Discord user ID (discord_user), generate and save a channel ID (discord_channel)
  3. 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)

The Versions