Просмотр файла libarea-0.9/app/Content/Integration/Discord.php

Размер файла: 2.52Kb
<?php

declare(strict_types=1);

namespace App\Content\Integration;

use Curl;

class Discord
{
    public static function addWebhook($text, $title, $url)
    {
        $text = strip_tags($text, '<p>');
        $text = preg_replace(['/(<p>)/', '(<\/p>)'], ['', '\n'], $text);

        // Проверяем имя бота и YOUR_WEBHOOK_URL
        if (!$webhookurl = config('integration', 'discord_webhook_url')) {
            return false;
        }
        if (!$usernamebot = config('integration', 'discord_name_bot')) {
            return false;
        }

        $content    = __('app.post');
        $color      = hexdec("3366ff");

        // Формируем даты
        $timestamp  = date("c");

        $json_data  = json_encode([

            // Сообщение над телом
            "content" => $content,

            // Ник бота который отправляет сообщение
            "username" => $usernamebot,

            // URL Аватара.
            // Можно использовать аватар загруженный при создании бота
            "avatar_url" => config('integration', 'discord_icon_url'),

            // Преобразование текста в речь
            "tts" => false,

            // Загрузка файла
            // "file" => "",

            // Массив Embeds
            "embeds" => [
                [
                    // Заголовок
                    "title" => $title,

                    // Тип Embed Type, не меняем
                    "type" => "rich",

                    // Описание
                    "description" => $text,

                    // Ссылка в заголовке url
                    "url" => config('meta', 'url') . $url,

                    // Таймштамп, обязательно в формате ISO8601
                    "timestamp" => $timestamp,

                    // Цвет границы слева, в HEX
                    "color" => $color,

                    // Подпись и аватар в подвале sitename
                    "footer" => [
                        "text" => config('integration', 'discord_name_bot'),
                        "icon_url" => config('integration', 'discord_icon_url'),
                    ],
                ]
            ]

        ], JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE);

        Curl::index($webhookurl, $json_data, ['Content-type: application/json']);

        return true;
    }
}