使用cURL-PHP将Discord Post消息发送到通道

使用cURL-PHP将Discord Post消息发送到通道,php,curl,discord,Php,Curl,Discord,我目前正在尝试在我的Discord频道上发布消息,尝试使用cURL post类型。我运行代码时遇到的问题是,它会给我一个401错误,说我未经授权。我正在使用xampp localhost在Web服务器上运行PHP代码。我还尝试通过URL链接()授权我的应用程序bot,并已成功将bot添加到我的频道中。看看我的代码 $data = array("Authorization: Bot" => $clientSecret, 'content' => 'Test Message');

我目前正在尝试在我的Discord频道上发布消息,尝试使用cURL post类型。我运行代码时遇到的问题是,它会给我一个401错误,说我未经授权。我正在使用xampp localhost在Web服务器上运行PHP代码。我还尝试通过URL链接()授权我的应用程序bot,并已成功将bot添加到我的频道中。看看我的代码

$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是我的discords频道/服务器id

注意:我已经根据这里给出的另一个stackoverflow答案对代码进行了建模。因此,我不确定是否为应用程序bot使用了正确的语法这里是完整的代码(没有cURL)。只需将此处的字符串WEBHOOK_替换为您的机器人的WEBHOOK:

<?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>

在此处键入您的消息:

我是新来的,所以我希望你喜欢这个代码

这里是完整的代码(没有cURL)。只需将此处的字符串WEBHOOK_替换为您的机器人的WEBHOOK:

<?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>

在此处键入您的消息:


我是新来的,所以我希望你喜欢这个代码

这里有一些看起来不对劲的地方,但因为我从来没有使用过Discord,所以在没有进一步验证的情况下,我不会深入讨论它。不过,通过快速的Google搜索(以及常见的API用法exp),我发现您需要将授权作为标头传递,而不是在正文有效负载中传递。因此,请尝试将
'Authorization:Bot.$token,
添加到
CURLOPT_HTTPHEADER
数组中。(请参阅)在进行此授权时,您需要使用令牌(而不是clientSecret)。这里有一些看起来不正确的地方,但由于我从未使用过Discord,因此在没有进一步验证的情况下,我不会进行讨论。不过,通过快速的Google搜索(以及常见的API用法exp),我发现您需要将授权作为标头传递,而不是在正文有效负载中传递。因此,请尝试将
'Authorization:Bot.$token,
添加到
CURLOPT_HTTPHEADER
数组中。(请参阅)要获得此授权,您需要使用令牌(而不是clientSecret)。