You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP中使用Curl调用Discord API无法获取图片数据求助

问题分析与解决方案

你的核心问题分两种场景,对应不同的解决方式:

场景1:发送带图片的消息后,响应中没有图片链接

你当前的代码仅发送了纯文本内容,未附加图片,所以响应里的attachments数组为空是正常现象。要发送带图片的消息,需改用multipart/form-data格式提交(Discord文件上传要求),而非application/json。

修改后的代码示例:

$myChannel = "9999214390985xxxxx";
$myToken = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx";

$msg = '#Hello';
$imagePath = '/path/to/your/image.jpg'; // 替换为你的图片本地路径

$ch = curl_init('https://discord.com/api/v9/channels/' . $myChannel . '/messages');
curl_setopt($ch, CURLOPT_POST, true);
// 构建表单数据,包含文本内容和图片文件
$postFields = array(
    'content' => $msg,
    'file' => new CURLFile($imagePath)
);
curl_setopt($ch, CURLOPT_POSTFIELDS, $postFields);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
    'Authorization: Bot ' . $myToken
));

$answer = curl_exec($ch);
echo $answer;
if (curl_error($ch)) {
    echo curl_error($ch);
}
curl_close($ch);

执行后,响应的attachments数组会包含图片的完整链接(url字段)。

场景2:获取频道中已存在的用户图片消息,响应无图片链接

如果是要抓取频道内用户已发送的带图消息,需调用获取频道消息的API,而非发送消息的API,同时注意以下几点:

  1. 升级API版本:你当前用的v6已被Discord废弃,改用最新的v9版本避免兼容性问题。
  2. 确保Bot权限:需给Bot分配Read Message History权限,才能读取历史消息。

获取消息的代码示例:

$myChannel = "9999214390985xxxxx";
$myToken = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx";

// 获取频道最近10条消息,可调整limit参数
$ch = curl_init('https://discord.com/api/v9/channels/' . $myChannel . '/messages?limit=10');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
    'Authorization: Bot ' . $myToken
));

$answer = curl_exec($ch);
$messages = json_decode($answer, true);

// 遍历消息,提取图片链接
foreach ($messages as $msg) {
    if (!empty($msg['attachments'])) {
        foreach ($msg['attachments'] as $attachment) {
            echo "图片链接:" . $attachment['url'] . "\n";
        }
    }
}

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

内容的提问来源于stack exchange,提问作者amit

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.24 21:18:16