Javascript/DiskoBOTlo_Discord/bot.js

89 lines
4.3 KiB
JavaScript

// Librerías y dependendias:
const Discord = require("discord.js");
const client = new Discord.Client();
const config = require("./config.json");
const mcping = require('mc-ping-updated');
// Prefijo para comandos "/":
let prefix = config.prefix;
// Funciones del bot:
client.on('ready', () => {
// Mensaje al iniciar el bot:
console.log("[ " + Date() + " ] Se ha iniciado el bot.");
});
client.on('message', message => {
// Ignoramos el contenido de los mensajes del BOT (evita bucle infinito):
// if (!message.content.startsWith(prefix)) return;
// if (message.author.bot) return;
// Id del canal de bienvenida:
var welcomeChanel = client.channels.cache.get(config.welcomeChanel);
// Id del canal de Minecraft:
var serverMinecraftChanel = client.channels.cache.get(config.serverMinecraftChanel);
//Id del canal de Junta:
var juntaChanel = client.channels.cache.get(config.juntaChanel);
// Id del rol "Suscriptor":
//var socioRol = message.guild.roles.cache.find(r => r.name === "socioRol");
var socioRol = message.guild.roles.cache.get(config.socioID);
// Asignación del rol al decir "Hola" en el canal de bienvenida.
if(message.channel == welcomeChanel){
//console.log(message.content);
if(message.content === 'Hola'){
if(message.member.roles.cache.has(socioRol.id)) {
message.channel.send('Hola a ti también 😉');
console.log("[ " + Date() + " ] Se ha interactuado con" + message.member.user.username + " en #BIENVENIDA.");
}
else {
message.member.roles.add(socioRol).catch(console.error); //Agregamos el rol al usuario
message.channel.send(message.member.user.username + ' *¡Bienvenido al servidor de Diskobolo!* 👋\n' +
'⚠️ Usa los canales adecuados para hablar de cada tema y respeta a los demás ⚠️\n' +
'👉 Se te ha asignado el rol: `'+socioRol.name+'` 👈.\n\n' +
'🐦 Puedes seguirnos en *twitter* 🐦: https://twitter.com/DSKbolo \n\n' +
'🔎 Recuerda la IP del servidor de Minecraft ⛏️: *diskobolo.fdi.ucm.es*\n', { parse_mode: 'Markdown' });
console.log("[ " + Date() + " ] Se ha asignado un rol de socioRol a " + message.member.user.username );
}
} else if(!(message.member.roles.cache.has(socioRol.id))) {
message.channel.send(message.member.user.username + ' escribe "Hola", para que se te asigne un rol.');
console.log("[ " + Date() + " ] Se ha solicitado a " + message.member.user.username + " que diga hola.");
}
}
if(message.channel == juntaChanel || message.channel == serverMinecraftChanel) {
if(message.content.startsWith(prefix + 'ping')) {
message.channel.send(`pong 🏓`);
}
if(message.content.startsWith(prefix + 'minecraft')) {
mcping('diskobolo.fdi.ucm.es', 25565, function(err, res) {
if (err) {
// Some kind of error
message.channel.send('El servidor *NO* funciona. Puede que haya explotado un creeper 🤷‍♂️', { parse_mode: 'Markdown' });
console.error("[ " + Date() + " ] " + message.member.user.username + " Error al mostrar el estado del servidor de Minecraft.\n\n" + err);
} else {
// Success!
message.channel.send('⛏️*SERVIDOR DE MINECRAFT DE DISKOBOLO*⛏️ \n\n' +
'Estado: *ACTIVO* \n' +
'IP del servidor: *diskobolo.fdi.ucm.es* \n' +
'Versión del servidor: *' + res.version.name + '* \n' +
'Jugadores conectados: *' + res.players.online +'*', { parse_mode: 'Markdown' });
console.log("[ " + Date() + " ] " + message.member.user.username + " Ha solicitado el estado del servidor de Minecraft. \n\n" + res)
//console.log(res);
}
}, 3000);
}
}
if(message.content.startsWith(prefix + 'autor') || message.content.startsWith(prefix + 'author')){
message.channel.send("Autor👤: *Fernando Méndez 'Humpercobra'* \n" +
"Web🌐: https://fermdez.ddns.net", {parse_mode : "Markdown"});
}
});
client.login(config.BOT_TOKEN);