@xiling-bot/minecraftping
Version:
xiling-bot的mc服务器ping插件
71 lines (68 loc) • 2.76 kB
JavaScript
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;