有没有办法改变参数的顺序?
Is there any way to change the order of arguments?
我正在研究一个搜索游戏 osu 地图的命令!在网站 bloodcat.com 上,我找到了一种过滤地图的方法:
.split('status=ranked').join('&c=b&s=1&m=&g=&l=')
.split('status=approved').join('&c=b&s=2&m=&g=&l=')
.split('status=qualified').join('&c=b&s=3&m=&g=&l=')
.split('status=loved').join('&c=b&s=4&m=&g=&l=')
.split('status=unranked').join('&c=b&s=0&m=&g=&l=')
.split('status=graveyarded').join('&c=b&s=0&m=&g=&l=');
现在有人可以做 !search 'map name' status=unranked
,那会寻找 https://bloodcat.com/osu/?mod=json&q='map name'&c=b&s=0&m=&g=&l=
,但是如果有人做,例如 !search status=unranked 'map name'
,那是行不通的,有什么办法吗?
即使用户没有把它放在命令的最后,我也可以把 status=unranked
放在最后吗?
我会这样做:首先,检查参数字符串是否以 status=
开头。如果是这样,您需要切换它们,否则,它应该像现在一样工作。
为了切换这些,我会用空格分割字符串,删除第一个参数(status=*
),用空格重新加入它并添加删除的部分:
function getQueryURL(argStr = "") { // argStr should be like "'map name' status=unranked" OR "status=unranked 'map name'"
if (argStr.startsWith('status=')) {
let arr = argStr.split(' ');
let removed = arr.shift();
argStr = arr.join(' ').trim() + removed.trim();
}
let res = argStr.split('status=ranked').join('&c=b&s=1&m=&g=&l=')
.split('status=approved').join('&c=b&s=2&m=&g=&l=')
.split('status=qualified').join('&c=b&s=3&m=&g=&l=')
.split('status=loved').join('&c=b&s=4&m=&g=&l=')
.split('status=unranked').join('&c=b&s=0&m=&g=&l=')
.split('status=graveyarded').join('&c=b&s=0&m=&g=&l=');
return "https://bloodcat.com/osu/?mod=json&q=" + res;
}
我正在研究一个搜索游戏 osu 地图的命令!在网站 bloodcat.com 上,我找到了一种过滤地图的方法:
.split('status=ranked').join('&c=b&s=1&m=&g=&l=')
.split('status=approved').join('&c=b&s=2&m=&g=&l=')
.split('status=qualified').join('&c=b&s=3&m=&g=&l=')
.split('status=loved').join('&c=b&s=4&m=&g=&l=')
.split('status=unranked').join('&c=b&s=0&m=&g=&l=')
.split('status=graveyarded').join('&c=b&s=0&m=&g=&l=');
现在有人可以做 !search 'map name' status=unranked
,那会寻找 https://bloodcat.com/osu/?mod=json&q='map name'&c=b&s=0&m=&g=&l=
,但是如果有人做,例如 !search status=unranked 'map name'
,那是行不通的,有什么办法吗?
即使用户没有把它放在命令的最后,我也可以把 status=unranked
放在最后吗?
我会这样做:首先,检查参数字符串是否以 status=
开头。如果是这样,您需要切换它们,否则,它应该像现在一样工作。
为了切换这些,我会用空格分割字符串,删除第一个参数(status=*
),用空格重新加入它并添加删除的部分:
function getQueryURL(argStr = "") { // argStr should be like "'map name' status=unranked" OR "status=unranked 'map name'"
if (argStr.startsWith('status=')) {
let arr = argStr.split(' ');
let removed = arr.shift();
argStr = arr.join(' ').trim() + removed.trim();
}
let res = argStr.split('status=ranked').join('&c=b&s=1&m=&g=&l=')
.split('status=approved').join('&c=b&s=2&m=&g=&l=')
.split('status=qualified').join('&c=b&s=3&m=&g=&l=')
.split('status=loved').join('&c=b&s=4&m=&g=&l=')
.split('status=unranked').join('&c=b&s=0&m=&g=&l=')
.split('status=graveyarded').join('&c=b&s=0&m=&g=&l=');
return "https://bloodcat.com/osu/?mod=json&q=" + res;
}