尝试使用 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: 下次你不想无礼的时候,不要写 “不是想无礼,但我想要一个答案[...]"