tomatophp / filament-discord-driver
Discord Server WebHook Notification for Filament Alerts Sender
Fund package maintenance!
3x1io
Requires
- php: ^8.1|^8.2
- filament/filament: ^3.2
- filament/notifications: ^3.2
- mallardduck/blade-boxicons: ^2.4
- tomatophp/console-helpers: ^1.1
- tomatophp/filament-alerts: ^2.2
Requires (Dev)
- laravel/pint: ^1.18
- livewire/livewire: ^2.10|^3.0
- nunomaduro/larastan: ^2.9
- orchestra/testbench: ^9.5
- pestphp/pest: ^2.36
- pestphp/pest-plugin-laravel: ^2.4
- pestphp/pest-plugin-livewire: ^2.1
- phpstan/extension-installer: ^1.4
- phpstan/phpstan-deprecation-rules: ^1.2
- phpstan/phpstan-phpunit: ^1.4
This package is auto-updated.
Last update: 2024-11-25 11:13:41 UTC
README
Filament Discord Driver
Discord Server WebHook Notification for Filament Alerts Sender
Screenshots
Installation
composer require tomatophp/filament-discord-driver
after install your package please run this command
php artisan filament-discord-driver:install
finally register the plugin on /app/Providers/Filament/AdminPanelProvider.php
->plugin(\TomatoPHP\FilamentDiscordDriver\FilamentDiscordDriverPlugin::make())
Usage
to set up any model to get notifications you
<?php namespace App\Models; use Illuminate\Contracts\Auth\MustVerifyEmail; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Foundation\Auth\User as Authenticatable; use Illuminate\Notifications\Notifiable; use Laravel\Fortify\TwoFactorAuthenticatable; use Laravel\Jetstream\HasProfilePhoto; use Laravel\Sanctum\HasApiTokens; use Spatie\Permission\Traits\HasRoles; use TomatoPHP\FilamentDiscordDriver\Traits\InteractsWithDiscord; class User extends Authenticatable { use HasApiTokens; use HasFactory; use HasProfilePhoto; use Notifiable; use TwoFactorAuthenticatable; use HasRoles; use InteractsWithDiscord; ...
Queue
the notification is run on queue, so you must run the queue worker to send the notifications
php artisan queue:work
Use Filament Native Notification
you can use the filament native notification and we add some macro
for you
use Filament\Notifications\Notification; Notification::make('send') ->title('Test Notifications') ->body('This is a test notification') ->icon('heroicon-o-bell') ->color('success') ->actions([ \Filament\Notifications\Actions\Action::make('view') ->label('View') ->url('https://google.com') ->markAsRead() ]) ->sendUse(auth()->user(), \TomatoPHP\FilamentDiscordDriver\Services\DiscordDriver::class, ['image' => 'https://via.placeholder.com/150']);
Notification Service
to create a new template you can use template CRUD and make sure that the template key is unique because you will use it on every single notification.
Send Notification
to send a notification you must use our helper SendNotification::class like
use TomatoPHP\FilamentAlerts\Facades\FilamentAlerts; FilamentAlerts::notify(User::first()) ->template($template->id) ->title([ "find-text" => "change with this" ]) ->body([ "find-text" => "change with this" ]) ->drivers(\TomatoPHP\FilamentDiscordDriver\Services\DiscordDriver::class) ->data(['image' => 'https://via.placeholder.com/150']) ->send();
where $template
is selected of the template by key or id, and title, body use to select and replace string on the template with custom data
Notification Channels
it can be working with direct user methods like
$user->notifyDiscord(string $title, ?string $message = null, ?string $url = null, ?string $image = null, ?string $webhook = null);
Allow Discord Error Logger
you can use Discord channel as an error logger to log and followup your error with a very easy way, on your bootstrap/app.php
add this class like this
use Illuminate\Foundation\Application; use Illuminate\Foundation\Configuration\Exceptions; use Illuminate\Foundation\Configuration\Middleware; use ProtoneMedia\Splade\Http\SpladeMiddleware; return Application::configure(basePath: dirname(__DIR__)) ->withRouting( web: __DIR__.'/../routes/web.php', api: __DIR__.'/../routes/api.php', commands: __DIR__.'/../routes/console.php', channels: __DIR__.'/../routes/channels.php', health: '/up', ) ->withMiddleware(function (Middleware $middleware) { }) ->withExceptions(function (Exceptions $exceptions) { \TomatoPHP\FilamentDiscordDriver\Helpers\DiscordErrorReporter::make($exceptions); })->create();
make sure you allow the Discord Error Log on the Discord Settings Page
Publish Assets
you can publish config file by use this command
php artisan vendor:publish --tag="filament-discord-driver-config"
you can publish languages file by use this command
php artisan vendor:publish --tag="filament-discord-driver-lang"
Testing
if you like to run PEST
testing just use this command
composer test
Code Style
if you like to fix the code style just use this command
composer format
PHPStan
if you like to check the code by PHPStan
just use this command
composer analyse
Other Filament Packages
Checkout our Awesome TomatoPHP