Merge pull request #3969 from coollabsio/jnovakdev/main
Discord notification updates
This commit is contained in:
@@ -15,7 +15,6 @@ use App\Notifications\Application\DeploymentSuccess;
|
|||||||
use App\Notifications\Application\StatusChanged;
|
use App\Notifications\Application\StatusChanged;
|
||||||
use App\Notifications\Database\BackupFailed;
|
use App\Notifications\Database\BackupFailed;
|
||||||
use App\Notifications\Database\BackupSuccess;
|
use App\Notifications\Database\BackupSuccess;
|
||||||
use App\Notifications\Database\DailyBackup;
|
|
||||||
use App\Notifications\Test;
|
use App\Notifications\Test;
|
||||||
use Exception;
|
use Exception;
|
||||||
use Illuminate\Console\Command;
|
use Illuminate\Console\Command;
|
||||||
@@ -121,23 +120,6 @@ class Emails extends Command
|
|||||||
$this->mail = (new Test)->toMail();
|
$this->mail = (new Test)->toMail();
|
||||||
$this->sendEmail();
|
$this->sendEmail();
|
||||||
break;
|
break;
|
||||||
case 'database-backup-statuses-daily':
|
|
||||||
$scheduled_backups = ScheduledDatabaseBackup::all();
|
|
||||||
$databases = collect();
|
|
||||||
foreach ($scheduled_backups as $scheduled_backup) {
|
|
||||||
$last_days_backups = $scheduled_backup->get_last_days_backup_status();
|
|
||||||
if ($last_days_backups->isEmpty()) {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
$failed = $last_days_backups->where('status', 'failed');
|
|
||||||
$database = $scheduled_backup->database;
|
|
||||||
$databases->put($database->name, [
|
|
||||||
'failed_count' => $failed->count(),
|
|
||||||
]);
|
|
||||||
}
|
|
||||||
$this->mail = (new DailyBackup($databases))->toMail();
|
|
||||||
$this->sendEmail();
|
|
||||||
break;
|
|
||||||
case 'application-deployment-success-daily':
|
case 'application-deployment-success-daily':
|
||||||
$applications = Application::all();
|
$applications = Application::all();
|
||||||
foreach ($applications as $application) {
|
foreach ($applications as $application) {
|
||||||
|
@@ -101,4 +101,17 @@ class InstanceSettings extends Model implements SendsEmail
|
|||||||
|
|
||||||
return "[{$instanceName}]";
|
return "[{$instanceName}]";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// public function helperVersion(): Attribute
|
||||||
|
// {
|
||||||
|
// return Attribute::make(
|
||||||
|
// get: function ($value) {
|
||||||
|
// if (isDev()) {
|
||||||
|
// return 'latest';
|
||||||
|
// }
|
||||||
|
|
||||||
|
// return $value;
|
||||||
|
// }
|
||||||
|
// );
|
||||||
|
// }
|
||||||
}
|
}
|
||||||
|
@@ -77,22 +77,38 @@ class DeploymentFailed extends Notification implements ShouldQueue
|
|||||||
{
|
{
|
||||||
if ($this->preview) {
|
if ($this->preview) {
|
||||||
$message = new DiscordMessage(
|
$message = new DiscordMessage(
|
||||||
title: 'Coolify: Deployment failed of pull request #'.$this->preview->pull_request_id.' of '.$this->application_name,
|
title: ':cross_mark: Deployment failed',
|
||||||
description: 'Check in the link below',
|
description: 'Pull request: '.$this->preview->pull_request_id,
|
||||||
color: DiscordMessage::errorColor(),
|
color: DiscordMessage::errorColor(),
|
||||||
isCritical: true,
|
isCritical: true,
|
||||||
);
|
);
|
||||||
|
|
||||||
$message->addField('Deployment Logs', '[Here]('.$this->deployment_url.')');
|
$message->addField('Project', data_get($this->application, 'environment.project.name'), true);
|
||||||
|
$message->addField('Environment', $this->environment_name, true);
|
||||||
|
$message->addField('Name', $this->application_name, true);
|
||||||
|
|
||||||
|
$message->addField('Deployment Logs', '[Link]('.$this->deployment_url.')');
|
||||||
|
if ($this->fqdn) {
|
||||||
|
$message->addField('Domain', $this->fqdn, true);
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
|
if ($this->fqdn) {
|
||||||
|
$description = '[Open application]('.$this->fqdn.')';
|
||||||
|
} else {
|
||||||
|
$description = '';
|
||||||
|
}
|
||||||
$message = new DiscordMessage(
|
$message = new DiscordMessage(
|
||||||
title: 'Coolify: Deployment failed of '.$this->application_name,
|
title: ':cross_mark: Deployment failed',
|
||||||
description: 'Check in the link below',
|
description: $description,
|
||||||
color: DiscordMessage::errorColor(),
|
color: DiscordMessage::errorColor(),
|
||||||
isCritical: true,
|
isCritical: true,
|
||||||
);
|
);
|
||||||
|
|
||||||
$message->addField('Deployment Logs', '[Here]('.$this->deployment_url.')');
|
$message->addField('Project', data_get($this->application, 'environment.project.name'), true);
|
||||||
|
$message->addField('Environment', $this->environment_name, true);
|
||||||
|
$message->addField('Name', $this->application_name, true);
|
||||||
|
|
||||||
|
$message->addField('Deployment Logs', '[Link]('.$this->deployment_url.')');
|
||||||
}
|
}
|
||||||
|
|
||||||
return $message;
|
return $message;
|
||||||
|
@@ -83,28 +83,35 @@ class DeploymentSuccess extends Notification implements ShouldQueue
|
|||||||
{
|
{
|
||||||
if ($this->preview) {
|
if ($this->preview) {
|
||||||
$message = new DiscordMessage(
|
$message = new DiscordMessage(
|
||||||
title: "Coolify: New PR{$this->preview->pull_request_id} version successfully deployed of {$this->application_name}",
|
title: ':white_check_mark: Preview deployment successful',
|
||||||
description: 'Check in the links below.',
|
description: 'Pull request: '.$this->preview->pull_request_id,
|
||||||
color: DiscordMessage::successColor(),
|
color: DiscordMessage::successColor(),
|
||||||
);
|
);
|
||||||
|
|
||||||
if ($this->preview->fqdn) {
|
if ($this->preview->fqdn) {
|
||||||
$message->addField('Open Application', '[Here]('.$this->preview->fqdn.')');
|
$message->addField('Application', '[Link]('.$this->preview->fqdn.')');
|
||||||
}
|
}
|
||||||
|
|
||||||
$message->addField('Deployment logs', '[Here]('.$this->deployment_url.')');
|
$message->addField('Project', data_get($this->application, 'environment.project.name'), true);
|
||||||
|
$message->addField('Environment', $this->environment_name, true);
|
||||||
|
$message->addField('Name', $this->application_name, true);
|
||||||
|
$message->addField('Deployment logs', '[Link]('.$this->deployment_url.')');
|
||||||
} else {
|
} else {
|
||||||
|
if ($this->fqdn) {
|
||||||
|
$description = '[Open application]('.$this->fqdn.')';
|
||||||
|
} else {
|
||||||
|
$description = '';
|
||||||
|
}
|
||||||
$message = new DiscordMessage(
|
$message = new DiscordMessage(
|
||||||
title: "Coolify: New version successfully deployed of {$this->application_name}",
|
title: ':white_check_mark: New version successfully deployed',
|
||||||
description: 'Check in the links below.',
|
description: $description,
|
||||||
color: DiscordMessage::successColor(),
|
color: DiscordMessage::successColor(),
|
||||||
);
|
);
|
||||||
|
$message->addField('Project', data_get($this->application, 'environment.project.name'), true);
|
||||||
|
$message->addField('Environment', $this->environment_name, true);
|
||||||
|
$message->addField('Name', $this->application_name, true);
|
||||||
|
|
||||||
if ($this->fqdn) {
|
$message->addField('Deployment logs', '[Link]('.$this->deployment_url.')');
|
||||||
$message->addField('Open Application', '[Here]('.$this->fqdn.')');
|
|
||||||
}
|
|
||||||
|
|
||||||
$message->addField('Deployment logs', '[Here]('.$this->deployment_url.')');
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return $message;
|
return $message;
|
||||||
|
@@ -59,14 +59,12 @@ class StatusChanged extends Notification implements ShouldQueue
|
|||||||
public function toDiscord(): DiscordMessage
|
public function toDiscord(): DiscordMessage
|
||||||
{
|
{
|
||||||
$message = new DiscordMessage(
|
$message = new DiscordMessage(
|
||||||
title: "Coolify: {$this->resource_name} has been stopped",
|
title: ':cross_mark: Application stopped',
|
||||||
description: 'Check the application in Coolify',
|
description: '[Open Application in Coolify]('.$this->resource_url.')',
|
||||||
color: DiscordMessage::errorColor(),
|
color: DiscordMessage::errorColor(),
|
||||||
isCritical: true,
|
isCritical: true,
|
||||||
);
|
);
|
||||||
|
|
||||||
$message->addField('Link', '[Open Application in Coolify]('.$this->resource_url.')');
|
|
||||||
|
|
||||||
return $message;
|
return $message;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -38,11 +38,15 @@ class ContainerRestarted extends Notification implements ShouldQueue
|
|||||||
public function toDiscord(): DiscordMessage
|
public function toDiscord(): DiscordMessage
|
||||||
{
|
{
|
||||||
$message = new DiscordMessage(
|
$message = new DiscordMessage(
|
||||||
title: "Coolify: A resource ({$this->name}) has been restarted automatically on {$this->server->name}",
|
title: ':warning: Resource restarted',
|
||||||
description: 'Please check the output below for more information.',
|
description: "{$this->name} has been restarted automatically on {$this->server->name}.",
|
||||||
color: DiscordMessage::infoColor(),
|
color: DiscordMessage::infoColor(),
|
||||||
);
|
);
|
||||||
|
|
||||||
|
if ($this->url) {
|
||||||
|
$message->addField('Resource', '[Link]('.$this->url.')');
|
||||||
|
}
|
||||||
|
|
||||||
return $message;
|
return $message;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -37,11 +37,17 @@ class ContainerStopped extends Notification implements ShouldQueue
|
|||||||
|
|
||||||
public function toDiscord(): DiscordMessage
|
public function toDiscord(): DiscordMessage
|
||||||
{
|
{
|
||||||
return new DiscordMessage(
|
$message = new DiscordMessage(
|
||||||
title: "Coolify: A resource ($this->name) has been stopped unexpectedly on {$this->server->name}",
|
title: ':cross_mark: Resource stopped',
|
||||||
description: 'Please check the output below for more information.',
|
description: "{$this->name} has been stopped unexpectedly on {$this->server->name}.",
|
||||||
color: DiscordMessage::errorColor(),
|
color: DiscordMessage::errorColor(),
|
||||||
);
|
);
|
||||||
|
|
||||||
|
if ($this->url) {
|
||||||
|
$message->addField('Resource', '[Link]('.$this->url.')');
|
||||||
|
}
|
||||||
|
|
||||||
|
return $message;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function toTelegram(): array
|
public function toTelegram(): array
|
||||||
|
@@ -49,13 +49,13 @@ class BackupFailed extends Notification implements ShouldQueue
|
|||||||
public function toDiscord(): DiscordMessage
|
public function toDiscord(): DiscordMessage
|
||||||
{
|
{
|
||||||
$message = new DiscordMessage(
|
$message = new DiscordMessage(
|
||||||
title: "Coolify: Database backup for {$this->name} (db:{$this->database_name}) has FAILED.",
|
title: ':cross_mark: Database backup failed',
|
||||||
description: 'Please check the output below for more information.',
|
description: "Database backup for {$this->name} (db:{$this->database_name}) has FAILED.",
|
||||||
color: DiscordMessage::errorColor(),
|
color: DiscordMessage::errorColor(),
|
||||||
isCritical: true,
|
isCritical: true,
|
||||||
);
|
);
|
||||||
|
|
||||||
$message->addField('Frequency', $this->frequency);
|
$message->addField('Frequency', $this->frequency, true);
|
||||||
$message->addField('Output', $this->output);
|
$message->addField('Output', $this->output);
|
||||||
|
|
||||||
return $message;
|
return $message;
|
||||||
|
@@ -48,12 +48,12 @@ class BackupSuccess extends Notification implements ShouldQueue
|
|||||||
public function toDiscord(): DiscordMessage
|
public function toDiscord(): DiscordMessage
|
||||||
{
|
{
|
||||||
$message = new DiscordMessage(
|
$message = new DiscordMessage(
|
||||||
title: "Coolify: Database backup for {$this->name} (db:{$this->database_name}) was successful.",
|
title: ':white_check_mark: Database backup successful',
|
||||||
description: 'Please check the output below for more information.',
|
description: "Database backup for {$this->name} (db:{$this->database_name}) was successful.",
|
||||||
color: DiscordMessage::successColor(),
|
color: DiscordMessage::successColor(),
|
||||||
);
|
);
|
||||||
|
|
||||||
$message->addField('Frequency', $this->frequency);
|
$message->addField('Frequency', $this->frequency, true);
|
||||||
|
|
||||||
return $message;
|
return $message;
|
||||||
}
|
}
|
||||||
|
@@ -1,55 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
namespace App\Notifications\Database;
|
|
||||||
|
|
||||||
use App\Notifications\Channels\DiscordChannel;
|
|
||||||
use App\Notifications\Channels\TelegramChannel;
|
|
||||||
use App\Notifications\Dto\DiscordMessage;
|
|
||||||
use Illuminate\Bus\Queueable;
|
|
||||||
use Illuminate\Contracts\Queue\ShouldQueue;
|
|
||||||
use Illuminate\Notifications\Channels\MailChannel;
|
|
||||||
use Illuminate\Notifications\Messages\MailMessage;
|
|
||||||
use Illuminate\Notifications\Notification;
|
|
||||||
|
|
||||||
class DailyBackup extends Notification implements ShouldQueue
|
|
||||||
{
|
|
||||||
use Queueable;
|
|
||||||
|
|
||||||
public $tries = 1;
|
|
||||||
|
|
||||||
public function __construct(public $databases) {}
|
|
||||||
|
|
||||||
public function via(object $notifiable): array
|
|
||||||
{
|
|
||||||
return [DiscordChannel::class, TelegramChannel::class, MailChannel::class];
|
|
||||||
}
|
|
||||||
|
|
||||||
public function toMail(): MailMessage
|
|
||||||
{
|
|
||||||
$mail = new MailMessage;
|
|
||||||
$mail->subject('Coolify: Daily backup statuses');
|
|
||||||
$mail->view('emails.daily-backup', [
|
|
||||||
'databases' => $this->databases,
|
|
||||||
]);
|
|
||||||
|
|
||||||
return $mail;
|
|
||||||
}
|
|
||||||
|
|
||||||
public function toDiscord(): DiscordMessage
|
|
||||||
{
|
|
||||||
return new DiscordMessage(
|
|
||||||
title: 'Coolify: Daily backup statuses',
|
|
||||||
description: 'Nothing to report.',
|
|
||||||
color: DiscordMessage::infoColor(),
|
|
||||||
); // todo: is this necessary notification? what is the purpose of this notification?
|
|
||||||
}
|
|
||||||
|
|
||||||
public function toTelegram(): array
|
|
||||||
{
|
|
||||||
$message = 'Coolify: Daily backup statuses';
|
|
||||||
|
|
||||||
return [
|
|
||||||
'message' => $message,
|
|
||||||
];
|
|
||||||
}
|
|
||||||
}
|
|
@@ -33,11 +33,12 @@ class DiscordMessage
|
|||||||
return hexdec('4f545c');
|
return hexdec('4f545c');
|
||||||
}
|
}
|
||||||
|
|
||||||
public function addField(string $name, string $value): self
|
public function addField(string $name, string $value, bool $inline = false): self
|
||||||
{
|
{
|
||||||
$this->fields[] = [
|
$this->fields[] = [
|
||||||
'name' => $name,
|
'name' => $name,
|
||||||
'value' => $value,
|
'value' => $value,
|
||||||
|
'inline' => $inline,
|
||||||
];
|
];
|
||||||
|
|
||||||
return $this;
|
return $this;
|
||||||
@@ -45,6 +46,10 @@ class DiscordMessage
|
|||||||
|
|
||||||
public function toPayload(): array
|
public function toPayload(): array
|
||||||
{
|
{
|
||||||
|
$footerText = 'Coolify v'.config('version');
|
||||||
|
if (isCloud()) {
|
||||||
|
$footerText = 'Coolify Cloud';
|
||||||
|
}
|
||||||
$payload = [
|
$payload = [
|
||||||
'embeds' => [
|
'embeds' => [
|
||||||
[
|
[
|
||||||
@@ -52,10 +57,12 @@ class DiscordMessage
|
|||||||
'description' => $this->description,
|
'description' => $this->description,
|
||||||
'color' => $this->color,
|
'color' => $this->color,
|
||||||
'fields' => $this->addTimestampToFields($this->fields),
|
'fields' => $this->addTimestampToFields($this->fields),
|
||||||
|
'footer' => [
|
||||||
|
'text' => $footerText,
|
||||||
|
],
|
||||||
],
|
],
|
||||||
],
|
],
|
||||||
];
|
];
|
||||||
|
|
||||||
if ($this->isCritical) {
|
if ($this->isCritical) {
|
||||||
$payload['content'] = '@here';
|
$payload['content'] = '@here';
|
||||||
}
|
}
|
||||||
@@ -68,6 +75,7 @@ class DiscordMessage
|
|||||||
$fields[] = [
|
$fields[] = [
|
||||||
'name' => 'Time',
|
'name' => 'Time',
|
||||||
'value' => '<t:'.now()->timestamp.':R>',
|
'value' => '<t:'.now()->timestamp.':R>',
|
||||||
|
'inline' => true,
|
||||||
];
|
];
|
||||||
|
|
||||||
return $fields;
|
return $fields;
|
||||||
|
@@ -50,12 +50,14 @@ class TaskFailed extends Notification implements ShouldQueue
|
|||||||
public function toDiscord(): DiscordMessage
|
public function toDiscord(): DiscordMessage
|
||||||
{
|
{
|
||||||
$message = new DiscordMessage(
|
$message = new DiscordMessage(
|
||||||
title: "Coolify: Scheduled task ({$this->task->name}) failed.",
|
title: ':cross_mark: Scheduled task failed',
|
||||||
description: "Output: {$this->output}",
|
description: "Scheduled task ({$this->task->name}) failed.",
|
||||||
color: DiscordMessage::errorColor(),
|
color: DiscordMessage::errorColor(),
|
||||||
);
|
);
|
||||||
|
|
||||||
$message->addField('Link', '[Open task in Coolify]('.$this->url.')');
|
if ($this->url) {
|
||||||
|
$message->addField('Scheduled task', '[Link]('.$this->url.')');
|
||||||
|
}
|
||||||
|
|
||||||
return $message;
|
return $message;
|
||||||
}
|
}
|
||||||
|
@@ -53,7 +53,7 @@ class DockerCleanup extends Notification implements ShouldQueue
|
|||||||
public function toDiscord(): DiscordMessage
|
public function toDiscord(): DiscordMessage
|
||||||
{
|
{
|
||||||
return new DiscordMessage(
|
return new DiscordMessage(
|
||||||
title: "Coolify: Server '{$this->server->name}' cleanup job done!",
|
title: ':white_check_mark: Server cleanup job done',
|
||||||
description: $this->message,
|
description: $this->message,
|
||||||
color: DiscordMessage::successColor(),
|
color: DiscordMessage::successColor(),
|
||||||
);
|
);
|
||||||
|
@@ -54,12 +54,12 @@ class ForceDisabled extends Notification implements ShouldQueue
|
|||||||
public function toDiscord(): DiscordMessage
|
public function toDiscord(): DiscordMessage
|
||||||
{
|
{
|
||||||
$message = new DiscordMessage(
|
$message = new DiscordMessage(
|
||||||
title: "Coolify: Server ({$this->server->name}) disabled because it is not paid!",
|
title: ':cross_mark: Server disabled',
|
||||||
description: 'All automations and integrations are stopped.',
|
description: "Server ({$this->server->name}) disabled because it is not paid!",
|
||||||
color: DiscordMessage::errorColor(),
|
color: DiscordMessage::errorColor(),
|
||||||
);
|
);
|
||||||
|
|
||||||
$message->addField('Link', 'Please update your subscription to enable the server again [here](https://app.coolify.io/subscriptions).');
|
$message->addField('Please update your subscription to enable the server again!', '[Link](https://app.coolify.io/subscriptions)');
|
||||||
|
|
||||||
return $message;
|
return $message;
|
||||||
}
|
}
|
||||||
|
@@ -54,8 +54,8 @@ class ForceEnabled extends Notification implements ShouldQueue
|
|||||||
public function toDiscord(): DiscordMessage
|
public function toDiscord(): DiscordMessage
|
||||||
{
|
{
|
||||||
return new DiscordMessage(
|
return new DiscordMessage(
|
||||||
title: "Coolify: Server '{$this->server->name}' enabled again!",
|
title: ':white_check_mark: Server enabled',
|
||||||
description: 'All automations and integrations are started.',
|
description: "Server '{$this->server->name}' enabled again!",
|
||||||
color: DiscordMessage::successColor(),
|
color: DiscordMessage::successColor(),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
@@ -56,14 +56,14 @@ class HighDiskUsage extends Notification implements ShouldQueue
|
|||||||
public function toDiscord(): DiscordMessage
|
public function toDiscord(): DiscordMessage
|
||||||
{
|
{
|
||||||
$message = new DiscordMessage(
|
$message = new DiscordMessage(
|
||||||
title: "Coolify: Server '{$this->server->name}' high disk usage detected!",
|
title: ':cross_mark: High disk usage detected',
|
||||||
description: 'Please cleanup your disk to prevent data-loss.',
|
description: "Server '{$this->server->name}' high disk usage detected!",
|
||||||
color: DiscordMessage::errorColor(),
|
color: DiscordMessage::errorColor(),
|
||||||
);
|
);
|
||||||
|
|
||||||
$message->addField('Disk usage', "{$this->disk_usage}%");
|
$message->addField('Disk usage', "{$this->disk_usage}%");
|
||||||
$message->addField('Threshold', "{$this->docker_cleanup_threshold}%");
|
$message->addField('Threshold', "{$this->docker_cleanup_threshold}%");
|
||||||
$message->addField('Link', 'Here are some tips: https://coolify.io/docs/knowledge-base/server/automated-cleanup.');
|
$message->addField('Tips', '[Link](https://coolify.io/docs/knowledge-base/server/automated-cleanup)');
|
||||||
|
|
||||||
return $message;
|
return $message;
|
||||||
}
|
}
|
||||||
|
@@ -76,7 +76,7 @@ class Revived extends Notification implements ShouldQueue
|
|||||||
public function toDiscord(): DiscordMessage
|
public function toDiscord(): DiscordMessage
|
||||||
{
|
{
|
||||||
return new DiscordMessage(
|
return new DiscordMessage(
|
||||||
title: "Coolify: Server '{$this->server->name}' revived.",
|
title: ":white_check_mark: Server '{$this->server->name}' revived",
|
||||||
description: 'All automations & integrations are turned on again!',
|
description: 'All automations & integrations are turned on again!',
|
||||||
color: DiscordMessage::successColor(),
|
color: DiscordMessage::successColor(),
|
||||||
);
|
);
|
||||||
|
@@ -67,8 +67,8 @@ class Unreachable extends Notification implements ShouldQueue
|
|||||||
public function toDiscord(): DiscordMessage
|
public function toDiscord(): DiscordMessage
|
||||||
{
|
{
|
||||||
$message = new DiscordMessage(
|
$message = new DiscordMessage(
|
||||||
title: "Coolify: Your server '{$this->server->name}' is unreachable.",
|
title: ':cross_mark: Server unreachable',
|
||||||
description: 'All automations & integrations are turned off! Please check your server!',
|
description: "Your server '{$this->server->name}' is unreachable.",
|
||||||
color: DiscordMessage::errorColor(),
|
color: DiscordMessage::errorColor(),
|
||||||
);
|
);
|
||||||
|
|
||||||
|
@@ -33,12 +33,12 @@ class Test extends Notification implements ShouldQueue
|
|||||||
public function toDiscord(): DiscordMessage
|
public function toDiscord(): DiscordMessage
|
||||||
{
|
{
|
||||||
$message = new DiscordMessage(
|
$message = new DiscordMessage(
|
||||||
title: 'Coolify: This is a test Discord notification from Coolify.',
|
title: ':white_check_mark: Test Success',
|
||||||
description: 'This is a test Discord notification from Coolify.',
|
description: 'This is a test Discord notification from Coolify. :cross_mark: :warning: :information_source:',
|
||||||
color: DiscordMessage::successColor(),
|
color: DiscordMessage::successColor(),
|
||||||
);
|
);
|
||||||
|
|
||||||
$message->addField('Link', '[Go to your dashboard]('.base_url().')');
|
$message->addField(name: 'Dashboard', value: '[Link]('.base_url().')', inline: true);
|
||||||
|
|
||||||
return $message;
|
return $message;
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user