Discord Опубликовать сообщение на канал, используя cURL - PHP - PullRequest
0 голосов
/ 25 августа 2018

В настоящее время я пытаюсь опубликовать сообщение на своем канале Discord, пытаясь использовать тип cURL POST.Проблема, которую я получаю, когда запускаю свой код, заключается в том, что он выдает ошибку 401, говорящую о том, что я не авторизован.Я запускаю свой PHP-код на веб-сервере, используя xampp localhost.Я также вошел и попытался авторизовать своего бота приложения по URL-ссылке (https://discordapp.com/oauth2/authorize?client_id=MYAPPLICATIONID&scope=bot&permissions=8)) и успешно добавил бота в мой канал. Посмотрите на мой код

$data = array("Authorization: Bot" => $clientSecret, 'content' => 'Test Message');                                                                  
$data_string = json_encode($data);                       

$ch = curl_init('https://discordapp.com/api/v6/channels/'.$myChannel.'/messages');                                                                     
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");                                                                    
curl_setopt($ch, CURLOPT_POSTFIELDS, $data_string);                                                                  
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);                                                                      
curl_setopt($ch, CURLOPT_HTTPHEADER, array(                                                                          
    'Content-Type: application/json',                                                                                
    'Content-Length: ' . strlen($data_string))                                                                       
);                                                                                                                   

$answer  = curl_exec($ch);

echo $answer;

if (curl_error($ch)) {
    echo curl_error($ch);
}

Я получаю $ clientSecretсо страницы приложения, чтобы открыть мой клиентский секретный токен, и $ myChannel - это идентификатор канала / сервера моего дискорда.

ПРИМЕЧАНИЕ.*. Так что я не уверен, что я использую правильный синтаксис для бота приложения

1 Ответ

0 голосов
/ 12 декабря 2018

Вот полный код (без cURL). Просто замените строку WEBHOOK_HERE на веб-крючок вашего бота:

<?php

    $message = $_POST['message'];
    $data = ['content' => $message];
    $options = [
        'http' => [
            'method' => 'POST',
            'header' => 'Content-Type: application/json',
            'content' => json_encode($data)
        ]
    ];

    $context = stream_context_create($options);
    $result = file_get_contents('WEBHOOK_HERE', false, $context);
?>

<form method="post">
  Type your message here :<br><input type="text" name="message"><br>

<input type="submit" value="Submit">
</form>

Я новичок здесь, поэтому я надеюсь, вам понравится код!

...