Отправляем сообщение на сервер Discord с помощью PHP

Отправляем сообщение на сервер Discord с помощью PHP

С помощью Discord API можно сделать много чего, но в данной статье я расскажу как с помощью PHP отправить сообщение на сервер Discord через Вебхук.

Создаём Вебхук на сервере Discord

Первым делом необходимо в настройках сервера Discord зайти в раздел Вебхуки, создать новый.

Настройки сервера > Вебхуки > Создать вебхук

Укажите имя вебхука, канал в который вы будете отправлять сообщение, и загрузите аватар. После чего скопируйте URL вебхука, этот адрес понадобится далее.

Создаём PHP-файл для отправки сообщения через Вебхук

Скопируйте готовый файл с GitHub. В коде добавлены комментарии, разобраться будет не сложно.

<?php
// Замените YOUR_WEBHOOK_URL на URL который вы получили в процессе создания вебхука
$webhookurl = "YOUR_WEBHOOK_URL";

$timestamp = date("c", strtotime("now"));

$json_data = json_encode([
    // Сообщение
    "content" => "Привет Мир! Это текстовое сообщение перед Embed объектом ;)",

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

    // URL Аватара.
    // Можно использовать аватар загруженный при создании бота, или указанный ниже
    //"avatar_url" => "https://ru.gravatar.com/userimage/28503754/1168e2bddca84fec2a63addb348c571d.jpg?size=512",

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

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

    // Массив Embeds
    "embeds" => [
        [
            // Заголовок
            "title" => "PHP - Send message to Discord (embeds) via Webhook",

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

            // Описание
            "description" => "Description will be here, someday",

            // Ссылка в заголовке
            "url" => "https://gist.github.com/Mo45/cb0813cb8a6ebcd6524f6a36d4f8862c",

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

            // Цвет границы слева, в HEX
            "color" => hexdec( "3366ff" ),

            // Подпись и аватар в подвале
            "footer" => [
                "text" => "GitHub.com/Mo45",
                "icon_url" => "https://ru.gravatar.com/userimage/28503754/1168e2bddca84fec2a63addb348c571d.jpg?size=375"
            ],

            // Изображение внутри Embed
            "image" => [
                "url" => "https://ru.gravatar.com/userimage/28503754/1168e2bddca84fec2a63addb348c571d.jpg?size=600"
            ],

            // Превью (thumbnail)
            //"thumbnail" => [
            //    "url" => "https://ru.gravatar.com/userimage/28503754/1168e2bddca84fec2a63addb348c571d.jpg?size=400"
            //],

            // Автор
            "author" => [
                "name" => "krasin.space",
                "url" => "https://krasin.space/"
            ],

            // Дополнительные поля
            "fields" => [
                // Field 1
                [
                    "name" => "Поле #1",
                    "value" => "Значение #1",
                    "inline" => false
                ],
                // Field 2
                [
                    "name" => "Поле #2",
                    "value" => "Значение #2",
                    "inline" => true
                ]
                // И т.д...
            ]
        ]
    ]

], JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE );


$ch = curl_init( $webhookurl );
curl_setopt( $ch, CURLOPT_HTTPHEADER, array('Content-type: application/json'));
curl_setopt( $ch, CURLOPT_POST, 1);
curl_setopt( $ch, CURLOPT_POSTFIELDS, $json_data);
curl_setopt( $ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt( $ch, CURLOPT_HEADER, 0);
curl_setopt( $ch, CURLOPT_RETURNTRANSFER, 1);

$response = curl_exec( $ch );
// Если что-то не работает, раскомментируйте строку ниже, и почитайте в чём беда :)
// echo $response;
curl_close( $ch );

Сохраняете файл, например discord.php и проверяете работоспособность кода можно через консоль:

php discord.php

Результат выполнения кода:

Отправляем сообщение на сервер Discord с помощью PHP
Вот так будет выглядеть сообщение на сервере Discord

Добавить комментарий

%d такие блоггеры, как: