Discord Server WebHook Notification for Filament Alerts Sender
composer require tomatophp/filament-discord-driverafter install your package please run this command
php artisan filament-discord-driver:installfinally register the plugin on /app/Providers/Filament/AdminPanelProvider.php
->plugin(\TomatoPHP\FilamentDiscordDriver\FilamentDiscordDriverPlugin::make())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;
...the notification is run on queue, so you must run the queue worker to send the notifications
php artisan queue:workyou 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']);
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.
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
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);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
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"if you like to run PEST testing just use this command
composer testif you like to fix the code style just use this command
composer formatif you like to check the code by PHPStan just use this command
composer analyseCheckout our Awesome TomatoPHP




