使用 Discord API 和 cURL 发送 Discord DM
Posted
技术标签:
【中文标题】使用 Discord API 和 cURL 发送 Discord DM【英文标题】:Using Discord API & cURL to send a Discord DM 【发布时间】:2021-10-12 13:01:50 【问题描述】:如何使用 cURL 发送 Discord DM?我已经让它与频道消息一起工作,但 Discord DM 对我的网站来说非常重要,可以让用户保持更新。以下是我目前得到的,ID 是 Discord 用户 ID。
$url = 'https://discordapp.com/api/channels/591765736003731487/messages';
$ch = curl_init();
$f = fopen('request.txt', 'w');
curl_setopt_array($ch, array(
CURLOPT_URL => $url,
CURLOPT_HTTPHEADER => array('Authorization : Bot <TOKEN>'),
CURLOPT_RETURNTRANSFER => 1,
CURLOPT_FOLLOWLOCATION => 1,
CURLOPT_VERBOSE => 1,
CURLOPT_SSL_VERIFYPEER => 0,
CURLOPT_STDERR => $f,
));
$response = curl_exec($ch);
fclose($f);
curl_close($ch);
【问题讨论】:
你检查过 Discord 开发者documentation? @Variable 我最近检查过。我发现您需要打开一个 DM 频道,但我不完全确定该怎么做,然后在 cURL 函数中使用 DM 频道 ID。 【参考方案1】:使用您当前的代码,我制作了一个小型 sn-p。您可能需要根据需要更改一些内容,但就此而言,它可以按预期工作。为了充分利用 CURL 请求而不是重复使用代码,我会将它放在一个函数中,在本例中为 MakeRequest($endpoint, $data)
$endpoint
是 String,$data
应该是 Array
为了打开并向用户发送直接消息,您需要这些端点。
用于创建新的直接消息
POST
/users/@me/channels
用于发送消息:
POST
/channels/channel.id/messages
<?php
function MakeRequest($endpoint, $data)
# Set endpoint
$url = "https://discord.com/api/".$endpoint."";
# Encode data, as Discord requires you to send json data.
$data = json_encode($data);
# Initialize new curl request
$ch = curl_init();
$f = fopen('request.txt', 'w');
# Set headers, data etc..
curl_setopt_array($ch, array(
CURLOPT_URL => $url,
CURLOPT_HTTPHEADER => array(
'Authorization: Bot token',
"Content-Type: application/json",
"Accept: application/json"
),
CURLOPT_RETURNTRANSFER => 1,
CURLOPT_FOLLOWLOCATION => 1,
CURLOPT_VERBOSE => 1,
CURLOPT_SSL_VERIFYPEER => 0,
CURLOPT_POSTFIELDS => $data
CURLOPT_STDERR => $f,
));
$request = curl_exec($ch);
curl_close($ch);
return json_decode($request, true);
# Open the DM first
$newDM = MakeRequest('/users/@me/channels', array("recipient_id" => "ID From the user"));
# Check if DM is created, if yes, let's send a message to this channel.
if(isset($newDM["id"]))
$newMessage = MakeRequest("/channels/".$newDM["id"]."/messages", array("content" => "Hello World."));
?>
注意:由于安全和隐私问题,如果出现以下情况,可能无法打开直接消息:
用户未与您的机器人共享同一台服务器。 用户已关闭服务器成员的 DM。 用户已阻止您的机器人。
【讨论】:
谢谢!我真的很感激,一直在寻找这个:) @Popcornography。不客气!希望这对你来说很好。 :) 我刚刚试了一下,效果很好。再次感谢您。现在我已经看到了,它也让理解如何在 API 中做其他事情变得更加容易:)以上是关于使用 Discord API 和 cURL 发送 Discord DM的主要内容,如果未能解决你的问题,请参考以下文章
在 CMD 中使用 Curl 发送 Discord webhook
Discord webhook embed php curl 在最近的 Discord 更新后不再工作