discord.js调用gametracker-scraper查询服务器人数返回[object Object]求助
问题原因
调用gametracker-scraper的get方法返回的是结构化对象,你直接将对象和字符串拼接时,JS会自动调用对象的toString()方法,最终输出就是[object Object]。
解决方法
方式1:查看完整对象结构
如果不清楚返回的对象包含哪些字段,可以先转成格式化的JSON字符串输出,确定你需要使用的字段:
// 建议将require语句提到脚本顶部,不要放在case分支内重复调用 const gametracker = require('gametracker-scraper') // ... 你的指令处理逻辑 case 'info': async function output() { let info = await gametracker.get('你的GameTracker服务器链接') message.channel.send(`Our Server Info:\n\`\`\`json\n${JSON.stringify(info, null, 2)}\n\`\`\``) } output() break
方式2:自定义排版输出
该模块返回的对象默认包含服务器名称、在线人数、最大人数、当前地图、IP等字段,你可以直接提取字段拼接成易读的消息:
async function output() { let info = await gametracker.get('你的GameTracker服务器链接') message.channel.send(`📊 服务器信息: 服务器名称:${info.name} 在线人数:${info.players}/${info.maxPlayers} 当前地图:${info.map} 连接地址:${info.ip}:${info.port}`) }
替代方案推荐
- 自行实现爬虫:使用
cheerio库解析GameTracker网页内容,可控性更高,不会受第三方封装模块更新影响 - 原生游戏协议查询:如果是Source、Minecraft等常见游戏,可以使用
gamedig模块直接通过游戏官方查询协议获取数据,不需要爬网页,响应速度更快、数据准确性更高。
内容的提问来源于stack exchange,提问作者I need Help
相关产品推荐
相关产品推荐

