я ищу бота, который показывает, подключен ли мой игровой сервер через IP и TCP? У кого-нибудь есть или может кто-нибудь связать это со мной, пожалуйста? Я не ищу бота для мониторинга сервера Minecraft, я знаю, что он есть, но я ищу другой игровой сервер. Все, что нужно сделать, это проверить, подключен ли игровой сервер к сети или нет. И, может быть, как команда, которая отвечает на текущий статус сервера. Я получил кое-что, работающее с uptimerobot и Discord webhook, но я также хотел бы получить ответ, например, если я использую команду! Serverstatus в моем канале Discord, тогда он ответит текущим состоянием сервера. ОБНОВЛЕНИЕ: Вот что я пробовал, бот продолжает отвечать «неопределено» по какой-то причине. Понятия не имею, как это исправить.
код:
const Discord = require("discord.js");
const client = new Discord.Client();
const settings = require('./config.json');
var statustring = "No signal";
var request = require('request');
var mcCommand = '/minecraft'; // Command for triggering
var mcIP = settings.ip; // Your MC server IP
var mcPort = settings.port; // Your MC server port
var url = 'http://mcapi.us/server/status?ip=' + mcIP + '&port=' + mcPort;
function update() {
/*seconds = seconds + 1;
secondsString = seconds.toString();
client.user.setActivity(secondsString, { type: 'Playing' })
.then(presence => console.log(`Activity set to ${presence.game ? presence.game.name : 'none'}`))
.catch(console.error);*/
request(url, function(err, response, body) {
if(err) {
console.log(err);
//return message.reply('Error getting Minecraft server status...');
}
body = JSON.parse(body);
var status = 'Server offline';
console.log(body.motd);
if(body.online) {
if((body.motd=="&cWe are under maintenance.")||(body.players.now>=body.players.max)){
client.user.setStatus('idle')
//.then(console.log)
.catch(console.error);
}else{
client.user.setStatus('online')
//.then(console.log)
.catch(console.error);
}
if(body.players.now) {
status = ' ' + body.players.now + ' of ' + body.players.max;
} else {
status = ' 0 of ' + body.players.max;
}
} else {
client.user.setStatus('dnd')
//.then(console.log)
.catch(console.error);
}
client.user.setActivity(status, { type: 'PLAYING' })
.then(presence => console.log(status))
.catch(console.error);
});
}
client.on("ready", () => {
console.log("I am ready!");
client.setInterval(update,8000);
});
client.on("message", (message) => {
if (message.content.startsWith("ping")) {
message.channel.send('PORT IN USE AT: ' + port);
update();
}
}
);
client.login(settings.token);
var portscanner = require('portscanner')
var port = portscanner.findAPortInUse([3000, 3005, 3006], '127.0.0.1', function(error, port) {
console.log('PORT IN USE AT: ' + update())
})
// You can also pass array of ports to check
portscanner.findAPortInUse([3000, 3005, 3006], '127.0.0.1', function(error, port) {
console.log('PORT IN USE AT: ' + port)
})`