问题描述
discord最近宣布,他们将其API从discordapp.com移至discord.com。
我正在重写我的一些代码(Google Apps Script项目)来解决这个问题,但是我遇到了无法访问discord.com
端点的问题,例如:
function example(){
var headers =
{
"Authorization": "Bot AbCdEfG123","Accept": "*/*"
};
var options =
{
"method": "GET","headers": headers,};
var response = UrlFetchApp.fetch("https://discord.com/api/guilds/"+GUILD_ID+"/members/"+MEMBER_ID,options);
}
即使使用旧的discordapp.com
也可以很好地工作。
使用discord.com
会导致403错误,而使用error code 1020
。
进一步调查:
- 通过Postman或curl执行相同的请求(针对
discord.com
)是成功的,因此问题似乎出在UrlFetchApp上 - 通过在标题中添加
"Accept": "*/*"
,我发现错误来自Cloudflare,以及消息Please enable cookies
。 - 将User-Agent添加到标头,例如
"User-Agent": "MyBot/1.0"
没有任何改变
我不知道该如何处理,我想知道是否还有其他人遇到过此问题。感谢您的帮助。
编辑:
以下是所需的文档:
- discord:https://discord.com/developers/docs/reference
- UrlFetchApp:https://developers.google.com/apps-script/reference/url-fetch/url-fetch-app
起作用的卷曲代码是
curl -H "Authorization: Bot [...]" "https://discord.com/api/guilds/[...]/members/[...]"
带有表示令牌或ID的省略号[...]
修改2:
Mozilla/5.0 (compatible; Google-Apps-Script; beanserver; +https://script.google.com; id: [...])
即使我仅将Mozilla部件纳入curl命令中,即
curl -H "Authorization: Bot [...]" -H "user-agent: Mozilla" "https://discord.com/api/guilds/[...]/members/[...]"
解决方法
您需要按照此格式设置用户代理 https://discord.com/developers/docs/reference#user-agent
User-Agent: DiscordBot ($url,$versionNumber)