Бот-дискорд показать, если игровой сервер онлайн или оффлайн? - PullRequest
0 голосов
/ 07 ноября 2019

я ищу бота, который показывает, подключен ли мой игровой сервер через 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)
})`
...