What's new

Bienvenido!

Al registrarse con nosotros, podrá discutir, compartir y enviar mensajes privados con otros miembros de nuestra comunidad.

Registrar cuenta Discord Nosetu Games

Juegos: Argentum Online Forever, Kicks Online 3, Narcs, Revival AO y más...

APORTE Sincroniza tu AO con Discord y Javascript (Compatible con todas las versiones)

APORTE

Sun

Administrator
Admin
Joined
Sep 25, 2022
Messages
97
Sirve para monitorear el juego desde discord y recibir notificaciones en tiempo real

Vista del bot:


586519cac6f4181a28070704aa805eec.png



24fa6f5c5c0ec269c735823af8e9c8b7.png


Contiene:
Configuración de mensajes por distintos canales
Comando /ONLINE para ver los usuarios conectados desde discord en tiempo real
Log en discord de todas las denuncias recibidas en el canal de denuncias
Log en discord de todos los bugs reportados por los usuarios en el canal de bugs
Log en discord cuando un GM banea, o aplica una pena a un personaje
Log en discord cuando un usuario borra un personaje
Log en discord de posibles sospechosos con uso de programas externos

Código testeado 100% funcional:
Code:
const Discord = require('discord.js');
const fs = require('fs');
const chokidar = require('chokidar');
const client = new Discord.Client();

const offTopicChannelId = '1078572095300177981';
const logsChannelId = '1136323081678372874';
const bugChannelId = '1007976430681997322';
const pjsBorradosChannelId = '1136330089596977192';
const antiCheatLogsSospechososChannelId = '1027081454095695924';
const banChannelId = '1015054306216521809';
const penaChannelId = '1015054306216521809';

let cache = {};

client.once('ready', () => {
    console.log('Ready!');

    const filesToWatch = [
        'dat/denuncias.ini',
        'dat/bugs.ini',
        'Consultas/Historial.dat',
        'Seguridad/BorradoPersonajes.dat',
        'Logs/AutoPot.log',
        'Logs/banDetail.dat',
        'seguridad/penas/historial.hst'
    ];

    filesToWatch.forEach((filename) => {
        cache[filename] = '';

        const watcher = chokidar.watch(filename, {
            persistent: true
        });

        watcher.on('change', (path) => {
            fs.readFile(path, 'utf-8', (err, data) => {
                if (err) throw err;

                let lines = data.split('\n');
                let newLines = '';

                if (filename === 'Logs/banDetail.dat' || filename === 'seguridad/penas/historial.hst') {
                    newLines = lines.slice(Math.max(lines.length - 4, 1)).join('\n');
                } else {
                    newLines = lines[lines.length - 2];
                }

                let message = '';
                let channelId = '';

                if (filename === 'dat/denuncias.ini') {
                    message = ':oncoming_police_car: **Nueva denuncia:**\n';
                    channelId = offTopicChannelId;
                } else if (filename === 'dat/bugs.ini') {
                    message = ':bug: **Nuevo bug reportado:**\n';
                    channelId = bugChannelId;
                } else if (filename === 'Consultas/Historial.dat') {
                    message = ':pencil: **Historial de consultas actualizado:**\n';
                    channelId = logsChannelId;
                } else if (filename === 'Seguridad/BorradoPersonajes.dat') {
                    message = ':wastebasket: **Un personaje ha sido borrado:**\n';
                    channelId = pjsBorradosChannelId;
                } else if (filename === 'Logs/AutoPot.log') {
                    message = ':exclamation: **Se detectado un posible uso de trucos (Poteo/U):**\n';
                    channelId = antiCheatLogsSospechososChannelId;
                } else if (filename === 'Logs/banDetail.dat') {
                    message = ':hammer: **Nuevo ban:**\n';
                    channelId = banChannelId;
                } else if (filename === 'seguridad/penas/historial.hst') {
                    message = ':judge: **Nueva pena:**\n';
                    channelId = penaChannelId;
                }

                const channel = client.channels.cache.get(channelId);
                if (!channel) throw new Error("Canal no encontrado");

                channel.send(message + '```' + newLines + '```');
            });
        });
    });
});

client.on('message', message => {
    if (message.content === '/ONLINE') {
        fs.readFile('Logs/numusers.txt', 'utf8', function(err, data) {
            if (err) throw err;
            message.channel.send('Usuarios online: ' + data);
        });
    }
});

client.login('tu-token-de-bot');


Instrucciones de uso:
1) Agregar en el código de su servidor un guardado de log por cada acción que se quiera notificar por discord
2) Generar un Token desde dev discord
3) Instalar NodeJS + Discord JS + Chokidar

Code:
npm install discord.js@12.5.3
npm install chokidar
 

Attachments

  • Capture.PNG
    Capture.PNG
    97.6 KB · Views: 1
Last edited:

Poser

New member
Joined
Jan 14, 2024
Messages
2
Soy un queso para la programación pero me parece re piola que tengan un bot en discord para estas cosas
 
Top