С помощью 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
Результат выполнения кода: