我当前正在尝试在我的Discord频道上发布一条消息,以尝试使用cURL POST类型。运行代码时遇到的问题是,它给我一个401错误,表明我未经授权。我正在使用xampp localhost在Web服务器上运行PHP代码。我还尝试通过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是我的不和谐频道/服务器ID。
注意:我已经根据此处discord php curl login Fail给出的另一个stackoverflow答案对代码进行了建模。所以我不确定我是否为应用程序机器人
使用了正确的语法答案 0 :(得分:2)
这里是完整代码(不带cURL)。只需将字符串WEBHOOK_HERE替换为机器人的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>
我是新来的,希望您喜欢这段代码!