尝试使用 RBLX Api 创建 robloxsearch 命令
Trying to make a robloxsearch command with RBLX Api
我正在尝试使用 ROBLOX 的 API 来执行 ;rs
命令,但效果不佳。
我尝试使用请求承诺进行搜索,但它给我带来了这个错误:
SyntaxError: Unexpected token o in JSON at position 1
我之前在此处查看过问题并回答了一些问题。如果这有帮助,我正在使用 discord.js-commando 作为我的命令处理程序。
这是错误来源的部分:
let editMsg = await msgObject.reply(
":triumph: Finding ROBLOX Account, give me a second!"
);
let rs = await request({
uri: `https://users.roblox.com/v1/users/search?keyword=${idk}&limit=10`,
simple: false,
json: true
});
if (rs.userFacingMessage == "Something went wrong"){
if(rs.code == 5){
editMsg.edit("Sorry , We couldn't process your search! The username you provided has been filtered!");
}
if(rs.code == 6){
editMsg.edit("Sorry , We couldn't process your search! The username you provided is too short!");
}
}else {
let user = JSON.parse(rs)
msgObject.reply(user)
}
如果您需要查看整个 run()
方法,这里是 PasteBin link。
request-promise
与选项 json: true
自动解析响应中的 JSON 字符串。这意味着您的变量 rs
已经是一个对象,而不是 JSON 字符串。
JSON.parse()
方法解析 JSON 字符串,因此当您尝试解析对象时,Node.js 首先将其转换为字符串 ([object Object]
)。第一个字符是 [
,它是有效的 JSON,但第二个字符(字母 o
)不是,因此您收到 SyntaxError: Unexpected token o in JSON at position 1
.
在下面试试:
const rs = {
previousPageCursor: null
}
try {
console.log(JSON.parse(rs))
} catch (error) {
console.log(error.message)
}
https://users.roblox.com/v1/users/search?keyword=${idk}&limit=10
return 处的 API 端点是一个对象,因此您不能简单地按原样在回复中发送它。您可以使用 JSON.stringify()
从该对象创建一个字符串,或者您可以从 rs.data
.
获取一组用户
如果您想要 return 单个用户,您可以从该数组中获取第一项 (rs.data[0]
),或者使用 find()
方法查找匹配项您的关键字:
} else {
const user = rs.data[0]
msgObject.reply(`\`\`\`${JSON.stringify(user, null, 2)}\`\`\``)
}
} else {
const user = rs.data.find((u) => u.name === idk)
msgObject.reply(`\`\`\`${JSON.stringify(user, null, 2)}\`\`\``)
}
PS: 下次你不想无礼的时候,不要写 “不是想无礼,但我想要一个答案[...]"
我正在尝试使用 ROBLOX 的 API 来执行 ;rs
命令,但效果不佳。
我尝试使用请求承诺进行搜索,但它给我带来了这个错误:
SyntaxError: Unexpected token o in JSON at position 1
我之前在此处查看过问题并回答了一些问题。如果这有帮助,我正在使用 discord.js-commando 作为我的命令处理程序。
这是错误来源的部分:
let editMsg = await msgObject.reply(
":triumph: Finding ROBLOX Account, give me a second!"
);
let rs = await request({
uri: `https://users.roblox.com/v1/users/search?keyword=${idk}&limit=10`,
simple: false,
json: true
});
if (rs.userFacingMessage == "Something went wrong"){
if(rs.code == 5){
editMsg.edit("Sorry , We couldn't process your search! The username you provided has been filtered!");
}
if(rs.code == 6){
editMsg.edit("Sorry , We couldn't process your search! The username you provided is too short!");
}
}else {
let user = JSON.parse(rs)
msgObject.reply(user)
}
如果您需要查看整个 run()
方法,这里是 PasteBin link。
request-promise
与选项 json: true
自动解析响应中的 JSON 字符串。这意味着您的变量 rs
已经是一个对象,而不是 JSON 字符串。
JSON.parse()
方法解析 JSON 字符串,因此当您尝试解析对象时,Node.js 首先将其转换为字符串 ([object Object]
)。第一个字符是 [
,它是有效的 JSON,但第二个字符(字母 o
)不是,因此您收到 SyntaxError: Unexpected token o in JSON at position 1
.
在下面试试:
const rs = {
previousPageCursor: null
}
try {
console.log(JSON.parse(rs))
} catch (error) {
console.log(error.message)
}
https://users.roblox.com/v1/users/search?keyword=${idk}&limit=10
return 处的 API 端点是一个对象,因此您不能简单地按原样在回复中发送它。您可以使用 JSON.stringify()
从该对象创建一个字符串,或者您可以从 rs.data
.
如果您想要 return 单个用户,您可以从该数组中获取第一项 (rs.data[0]
),或者使用 find()
方法查找匹配项您的关键字:
} else {
const user = rs.data[0]
msgObject.reply(`\`\`\`${JSON.stringify(user, null, 2)}\`\`\``)
}
} else {
const user = rs.data.find((u) => u.name === idk)
msgObject.reply(`\`\`\`${JSON.stringify(user, null, 2)}\`\`\``)
}
PS: 下次你不想无礼的时候,不要写 “不是想无礼,但我想要一个答案[...]"