FiveM Lua调用Discord API PATCH方法报资源不存在错误求助
解决Discord API PATCH请求“资源不存在”错误的思路
检查API端点路径准确性
Discord的PATCH端点格式要求严格,比如修改频道权限的标准端点为/channels/{channel.id}/permissions/{overwrite.id},需确认:- 未混淆
overwrite.id(权限覆盖条目ID)与角色/用户ID:若修改已有权限覆盖,必须使用对应覆盖条目的ID;若为新添加权限覆盖,应使用PUT请求而非PATCH - 路径无缺失片段(如漏写
/permissions/),且频道ID未误用为分类ID
- 未混淆
验证令牌权限与格式
- 确保Bot令牌包含
MANAGE_CHANNELS权限,权限不足可能被Discord伪装成“资源不存在”报错 - 确认令牌格式为
Bot {token}(注意Bot后有空格),无拼写错误或过期情况
- 确保Bot令牌包含
检查PATCH请求Body格式
Discord API对JSON格式的Body有严格要求:allow、deny需为十进制权限位数值,而非字符串或二进制- 必须包含
type字段(0代表角色,1代表用户),缺失会导致Discord无法识别权限覆盖对象 - 输出完整请求Body并对比官方文档示例,排查语法错误(如逗号漏写、引号不匹配)
直接测试API端点有效性
用curl或Postman直接发起请求,排除Lua代码封装问题:curl -X PATCH "https://discord.com/api/v10/channels/CHANNEL_ID/permissions/OVERWRITE_ID" \ -H "Authorization: Bot YOUR_TOKEN" \ -H "Content-Type: application/json" \ -d '{"allow": 0, "deny": 1024, "type": 0}'若直接调用仍报错,说明问题出在API参数或权限;若调用成功,则需排查Lua封装函数
排查DiscordRequest封装函数
- 确认已设置请求头
Content-Type: application/json,PATCH请求必须携带该头才能让Discord解析Body - 检查是否正确传递
PATCH请求方法,未误写为PUT/POST - 确认HTTP库处理HTTPS请求无异常,FiveM默认HTTP库无需额外配置证书,但自定义库可能存在问题
- 确认已设置请求头
确认权限覆盖对象存在性
调用GET /channels/{channel.id}/permissions接口获取当前频道权限覆盖列表,确认要修改的overwrite.id确实存在于列表中
内容的提问来源于stack exchange,提问作者Jim1120
相关产品推荐
相关产品推荐

