UNPKG

@xiling-bot/minecraftping

Version:
71 lines (68 loc) 2.76 kB
const { ping } = require("minecraft-protocol"); const fs = require("fs"); const { join } = require("path"); let options = [{ host: null, port: null, closeTimeout: 2 * 1000, // 连接超时时间 noPongTimeout: 1 * 1000, // 连接后未响应时间 }] // mc模块 const minecraft = { name: "minecraft 服务器检测", mounted() { try { options = require(join(process.cwd(), "./options/minecraftPing.json")); } catch (err) { console.log("[mc] 需要初始化服务器信息"); fs.writeFileSync(join(process.cwd(), "./options/minecraftPing.json"), JSON.stringify(options, null, 4)); }; }, command: { name: "mc", exce: async (msg) => { let data = []; for (var i = 0; i < options.length; i++) { let temp = {}; temp.host = `${options[i].host}:${options[i].port}`; try { temp.data = await ping(options[i]); } catch (err) { console.log("请求出错", err); }; data.push(temp); } if (data.length) { try { let serverInfo = ""; data.forEach((item, i) => { let server = item.data; if (i !== 0) { serverInfo += `\n===============\n`; } serverInfo += `地址: ${item.host}`; if (server) { serverInfo += `\n状态: 在线`; serverInfo += `\n版本: ${server.version.name}`; if (server.players.sample) { serverInfo += `\n在线列表[${server.players.sample.length}]:`; for (var i = 0; i < server.players.sample.length; i++) { serverInfo += `\n${server.players.sample[i].name}`; }; }; } else { serverInfo += `\n状态: 离线`; } }) msg.quoteReply([{ type: "Plain", text: serverInfo }], msg); } catch (err) { console.log(err); msg.quoteReply([{ type: "Plain", text: "解构数据失败,请重试" }], msg); }; } else { msg.quoteReply([{ type: "Plain", text: "请求失败" }], msg); }; } } } module.exports = minecraft;