尝试使用 RBLX Api 制作 robloxsearch 命令

问题描述 投票:0回答:3

我正在尝试使用 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 链接

javascript node.js discord.js roblox
3个回答
1
投票

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
处的API端点返回一个对象,因此您不能简单地在回复中按原样发送它。您可以使用
JSON.stringify()
从该对象创建字符串,或者您可以从
rs.data
获取用户数组。

如果您想返回单个用户,您可以从该数组中获取第一项 (

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)}\`\`\``)
}

enter image description here

PS:下次当你不想粗鲁时,请不要写“不想粗鲁,但我想要一个答案[...]”


0
投票

const rs = {
  previousPageCursor: null
}
try {
  console.log(JSON.parse(rs))
} catch (error) {
  console.log(error.message)
}


-2
投票

const rs = {
  previousPageCursor: null
}
try {
  console.log(JSON.parse(rs))
} catch (error) {
  console.log(error.message)
}

© www.soinside.com 2019 - 2024. All rights reserved.