PHP调用Discord API移动频道分类遇LIST_TYPE_CONVERT错误求助
解决Discord频道移动分类的API错误问题
你遇到的Invalid Form Body(错误码50035)和LIST_TYPE_CONVERT提示,核心问题是请求体格式不符合Discord API要求:
PATCH /guilds/{guild_id}/channels 端点要求请求体是数组结构(即使只操作单个频道),而你直接传了单个对象,导致API无法解析为List类型。
修正后的代码
<?php // 将频道移动到归档分类 $url = "https://discord.com/api/v10/guilds/$discordID/channels"; // 必须用外层数组包裹频道配置对象 $data = [ [ 'id' => 'xxxxx', // 目标频道ID 'parent_id' => "xxxxxx" // 目标分类ID ] ]; $data_json = json_encode($data); $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_HTTPHEADER, [ 'Authorization: Bot xxxxxxxx', 'Content-Type: application/json' ]); // 移除手动设置的Content-Length,curl会自动处理 curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'PATCH'); curl_setopt($ch, CURLOPT_POSTFIELDS, $data_json); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $response = curl_exec($ch); echo $response; curl_close($ch); ?>
关键修正点
- 把单个频道的配置对象包裹进外层数组,满足API对ListType的要求
- 移除手动计算的
Content-Length请求头,避免因字符串编码差异导致的长度错误,curl会自动生成正确的头信息 - 如果需要批量调整多个频道的分类或位置,只需在外层数组中添加更多包含
id和对应配置的对象即可
内容的提问来源于stack exchange,提问作者MOHAMED AL YOUSUFI
相关产品推荐
相关产品推荐

