2022-11-09 05:15:59 -05:00
|
|
|
|
/* eslint-disable max-len */
|
2022-08-14 05:51:45 -04:00
|
|
|
|
/* eslint-disable no-var */
|
|
|
|
|
/* eslint-disable prefer-rest-params */
|
|
|
|
|
/* eslint-disable no-tabs */
|
|
|
|
|
/* eslint-disable no-undef */
|
|
|
|
|
const mc = require('minecraft-protocol');
|
2022-08-18 22:36:34 -04:00
|
|
|
|
const config = require('./config');
|
2022-08-14 05:51:45 -04:00
|
|
|
|
const crypto = require('crypto');
|
|
|
|
|
const colorConvert = require('color-convert');
|
2022-10-31 05:46:23 -04:00
|
|
|
|
const sleep = require('sleep-promise');
|
2022-08-18 21:39:59 -04:00
|
|
|
|
const {containsIllegalCharacters} = require('./util/containsIllegalCharacters');
|
2022-08-16 07:38:50 -04:00
|
|
|
|
const generateEaglerUsername = require('./util/generateEaglerUsername');
|
2022-08-14 05:51:45 -04:00
|
|
|
|
const {EventEmitter} = require('events');
|
2022-11-08 05:43:24 -05:00
|
|
|
|
const {loadPlugins} = require('./util/loadPlugins');
|
2022-08-14 05:51:45 -04:00
|
|
|
|
const uuid = require('uuid-by-string');
|
|
|
|
|
const readline = require('node:readline');
|
|
|
|
|
const {stdin: input, stdout: output} = require('node:process');
|
|
|
|
|
const rl = readline.createInterface({input, output});
|
|
|
|
|
const moment = require('moment-timezone');
|
2022-08-22 06:16:36 -04:00
|
|
|
|
const cowsay = require('cowsay2');
|
2022-08-27 21:59:14 -04:00
|
|
|
|
const cows = require('cowsay2/cows');
|
2022-08-14 05:51:45 -04:00
|
|
|
|
const util = require('node:util');
|
|
|
|
|
const {escapeMarkdown} = require('./util/escapeMarkdown');
|
|
|
|
|
const {VM} = require('vm2');
|
|
|
|
|
const randomstring = require('randomstring');
|
|
|
|
|
const mineflayer = require('mineflayer');
|
|
|
|
|
// readline > fix on console.log
|
|
|
|
|
const log = console.log;
|
|
|
|
|
console.log = function() {
|
|
|
|
|
rl.output.write('\x1b[2K\r');
|
|
|
|
|
log.apply(console, Array.prototype.slice.call(arguments));
|
|
|
|
|
rl._refreshLine();
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
// Load discord.js
|
|
|
|
|
const {
|
|
|
|
|
Client,
|
|
|
|
|
Intents,
|
|
|
|
|
} = require('discord.js');
|
|
|
|
|
// Create Discord intentions, required in v13
|
|
|
|
|
const intents = new Intents(['GUILDS', 'GUILD_MESSAGES']);
|
|
|
|
|
// Create Discord client
|
|
|
|
|
const dcclient = new Client({
|
|
|
|
|
intents,
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
const ayunboomchannel = config.discord.servers['sus.shhnowisnottheti.me:25565'];
|
|
|
|
|
const dinboomchannel = config.discord.servers['129.159.58.114:25565'];
|
2022-10-18 04:14:29 -04:00
|
|
|
|
const kaboomchannel = config.discord.servers['kaboom.pw:25565'];
|
2022-08-14 05:51:45 -04:00
|
|
|
|
const localclonechannel = config.discord.servers['192.168.1.103:25565'];
|
|
|
|
|
const kitsunechannel = config.discord.servers['kitsune.icu:25565'];
|
2022-08-20 22:21:23 -04:00
|
|
|
|
const chomensserverchannel = config.discord.servers['mc.chomens41793.ga:25565'];
|
2022-08-14 05:51:45 -04:00
|
|
|
|
let chomenschannel = '969773424387981356';
|
|
|
|
|
const hashchannel = '980438368422871151';
|
|
|
|
|
const ownerhashchannel = '980786390247833620';
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* empty function for discord message
|
|
|
|
|
* @return {String}
|
|
|
|
|
*/
|
|
|
|
|
function dcmsg() {
|
|
|
|
|
return 'this does nothing...';
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function botThings() {
|
|
|
|
|
bot = new EventEmitter();
|
|
|
|
|
bot.options = {
|
2022-11-09 05:15:59 -05:00
|
|
|
|
username: process.argv[2] === 'mc.chomens41793.ga' ?
|
|
|
|
|
'ChomeNS_Bot' :
|
|
|
|
|
randomstring.generate(16),
|
2022-08-14 05:51:45 -04:00
|
|
|
|
host: process.argv[2],
|
|
|
|
|
port: process.argv[3] ? Number(process.argv[3]) : 25565,
|
2022-10-22 02:01:33 -04:00
|
|
|
|
version: config.version,
|
2022-08-14 05:51:45 -04:00
|
|
|
|
checkTimeoutInterval: '30000',
|
|
|
|
|
keepAlive: false,
|
|
|
|
|
hideErrors: true,
|
|
|
|
|
};
|
|
|
|
|
bot._client = mc.createClient(bot.options);
|
2022-10-18 21:37:33 -04:00
|
|
|
|
bot.version = bot._client.version;
|
2022-08-14 05:51:45 -04:00
|
|
|
|
bot.queue = [];
|
|
|
|
|
bot.write = (name, data) => bot._client.write(name, data);
|
|
|
|
|
bot.end = (reason = 'end') => {
|
|
|
|
|
bot.emit('end', reason);
|
|
|
|
|
bot.removeAllListeners();
|
|
|
|
|
bot._client.end();
|
|
|
|
|
bot._client.removeAllListeners();
|
|
|
|
|
};
|
|
|
|
|
bot.visibility = false;
|
|
|
|
|
bot.getplayerusername = {};
|
|
|
|
|
|
2022-11-08 05:43:24 -05:00
|
|
|
|
loadPlugins(bot, dcclient, config);
|
2022-08-14 05:51:45 -04:00
|
|
|
|
}
|
|
|
|
|
|
2022-10-24 21:46:47 -04:00
|
|
|
|
let messageloggingEnabled = true;
|
|
|
|
|
|
2022-08-14 05:51:45 -04:00
|
|
|
|
/**
|
|
|
|
|
* Main bot function
|
|
|
|
|
*/
|
|
|
|
|
function main() {
|
|
|
|
|
// allink's chat queue
|
|
|
|
|
chatQueue = setInterval(function() {
|
|
|
|
|
try {
|
2022-11-07 07:26:38 -05:00
|
|
|
|
if (bot.queue[0] || bot.queue[0] === '') {
|
2022-08-14 05:51:45 -04:00
|
|
|
|
try {
|
2022-08-18 23:07:12 -04:00
|
|
|
|
if (containsIllegalCharacters(bot.queue[0])) {
|
|
|
|
|
bot.queue.shift();
|
|
|
|
|
return;
|
|
|
|
|
};
|
2022-08-16 08:15:11 -04:00
|
|
|
|
bot.write('chat', {message: bot.queue[0].substring(0, 256)});
|
2022-08-14 05:51:45 -04:00
|
|
|
|
bot.queue.shift();
|
|
|
|
|
} catch (e) {
|
2022-08-18 21:39:59 -04:00
|
|
|
|
console.log(e.message);
|
2022-08-14 05:51:45 -04:00
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
} catch (e) {
|
|
|
|
|
return;
|
|
|
|
|
}
|
2022-10-22 04:37:39 -04:00
|
|
|
|
}, 450);
|
2022-08-14 05:51:45 -04:00
|
|
|
|
|
|
|
|
|
module.exports = function() {
|
|
|
|
|
return bot;
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
dcmsg.queue = '';
|
2022-09-13 09:10:09 -04:00
|
|
|
|
consoleQueue = [];
|
2022-08-14 05:51:45 -04:00
|
|
|
|
|
|
|
|
|
bot.playersAddedPlayers = {};
|
|
|
|
|
bot.getplayerusername = {};
|
|
|
|
|
|
|
|
|
|
bot.hash = '';
|
|
|
|
|
|
|
|
|
|
bot.chat = (message) => {
|
|
|
|
|
bot.queue.push(String(message));
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
discordQueue = setInterval(function() {
|
|
|
|
|
if (dcmsg.queue!='') {
|
2022-11-09 05:15:59 -05:00
|
|
|
|
channel.send({
|
|
|
|
|
content: '```ansi\n' + dcmsg.queue.substring(0, 1986) + '\n```',
|
|
|
|
|
allowedMentions: {
|
|
|
|
|
parse: [],
|
|
|
|
|
},
|
|
|
|
|
});
|
2022-08-14 05:51:45 -04:00
|
|
|
|
dcmsg.queue = '';
|
|
|
|
|
}
|
2022-11-06 00:28:19 -04:00
|
|
|
|
}, 1000);
|
2022-08-14 05:51:45 -04:00
|
|
|
|
|
2022-09-13 09:05:19 -04:00
|
|
|
|
consoleQueueInterval = setInterval(function() {
|
2022-10-23 09:14:34 -04:00
|
|
|
|
if (!messageloggingEnabled) return;
|
2022-09-17 04:06:17 -04:00
|
|
|
|
if (consoleQueue.length > 50) consoleQueue = [];
|
2022-11-07 07:26:38 -05:00
|
|
|
|
if (consoleQueue[0] || consoleQueue[0] === '') {
|
2022-11-09 05:15:59 -05:00
|
|
|
|
console.log(
|
|
|
|
|
'\u001b[48:5:208m' +
|
|
|
|
|
bot.options.host +
|
|
|
|
|
'\u001b[0m' +
|
|
|
|
|
': ' +
|
|
|
|
|
consoleQueue[0].substring(0, 10000),
|
|
|
|
|
);
|
2022-09-13 09:10:09 -04:00
|
|
|
|
consoleQueue.shift();
|
2022-09-13 09:05:19 -04:00
|
|
|
|
}
|
|
|
|
|
}, 100);
|
|
|
|
|
|
2022-10-22 01:58:07 -04:00
|
|
|
|
bot.once('end', (reason, event) => {
|
2022-11-09 05:15:59 -05:00
|
|
|
|
console.log(
|
|
|
|
|
`Disconnected from ${bot.options.host} (${event} event): ${util.inspect(reason)}`,
|
|
|
|
|
);
|
2022-10-24 21:43:51 -04:00
|
|
|
|
channel.send(`Disconnected: \`${util.inspect(reason)}\``);
|
2022-10-22 01:58:07 -04:00
|
|
|
|
|
2022-10-29 05:50:33 -04:00
|
|
|
|
let timeout = config.reconnectTimeout;
|
2022-10-22 01:58:07 -04:00
|
|
|
|
|
2022-10-25 02:36:13 -04:00
|
|
|
|
try {
|
|
|
|
|
if (reason.text) {
|
2022-11-09 05:15:59 -05:00
|
|
|
|
if (reason.text ===
|
|
|
|
|
'Wait 5 seconds before connecting, thanks! :)' ||
|
|
|
|
|
reason.text ===
|
|
|
|
|
'You are logging in too fast, try again later.'
|
|
|
|
|
) timeout = 1000 * 7;
|
2022-10-25 02:36:13 -04:00
|
|
|
|
}
|
2022-11-05 21:00:18 -04:00
|
|
|
|
} catch (e) {
|
|
|
|
|
console.log(e);
|
|
|
|
|
}
|
2022-10-22 01:58:07 -04:00
|
|
|
|
|
|
|
|
|
try {
|
|
|
|
|
clearInterval(notonline);
|
|
|
|
|
clearInterval(discordQueue);
|
|
|
|
|
clearInterval(chatQueue);
|
|
|
|
|
clearInterval(consoleQueueInterval);
|
2022-10-22 02:46:20 -04:00
|
|
|
|
} catch (e) {}
|
2022-10-22 01:58:07 -04:00
|
|
|
|
|
|
|
|
|
setTimeout(() => {
|
|
|
|
|
bot.end();
|
|
|
|
|
botThings();
|
|
|
|
|
main();
|
|
|
|
|
}, timeout);
|
|
|
|
|
});
|
|
|
|
|
|
2022-08-14 05:51:45 -04:00
|
|
|
|
console.log(`Connecting to: ${bot.options.host}:${bot.options.port}...`);
|
|
|
|
|
channel.send(`Connecting to: \`${bot.options.host}:${bot.options.port}\`...`);
|
|
|
|
|
bot._client.on('login', async function(data) {
|
2022-10-18 21:37:33 -04:00
|
|
|
|
bot.entityId = data.entityId;
|
2022-10-19 08:22:26 -04:00
|
|
|
|
bot.uuid = bot._client.uuid;
|
|
|
|
|
bot.username = bot._client.username;
|
2022-10-22 02:55:31 -04:00
|
|
|
|
chatMessage = require('prismarine-chat')(bot.version);
|
2022-10-18 20:59:58 -04:00
|
|
|
|
const mcData = require('minecraft-data')(bot.version);
|
2022-11-09 05:15:59 -05:00
|
|
|
|
console.log(
|
|
|
|
|
`Successfully logged in to: ${bot.options.host}:${bot.options.port}`,
|
|
|
|
|
);
|
|
|
|
|
channel.send(
|
|
|
|
|
`Successfully logged in to: \`${bot.options.host}:${bot.options.port}\``,
|
|
|
|
|
);
|
2022-08-14 05:51:45 -04:00
|
|
|
|
previusMessage = undefined;
|
|
|
|
|
loginfinish = false;
|
|
|
|
|
started = false;
|
|
|
|
|
bot.eaglercrashstarted = false;
|
|
|
|
|
await sleep(1500);
|
|
|
|
|
bot.createCore();
|
|
|
|
|
|
|
|
|
|
bot.vmoptions = {
|
|
|
|
|
timeout: 2000,
|
|
|
|
|
sandbox: {
|
2022-08-17 07:59:26 -04:00
|
|
|
|
run: function(cmd) {
|
|
|
|
|
bot.core.run(cmd);
|
|
|
|
|
},
|
2022-10-24 05:42:18 -04:00
|
|
|
|
mc,
|
|
|
|
|
mineflayer,
|
2022-08-14 05:51:45 -04:00
|
|
|
|
chat: bot.chat,
|
2022-10-24 05:42:18 -04:00
|
|
|
|
moment,
|
|
|
|
|
randomstring,
|
|
|
|
|
uuid,
|
|
|
|
|
chatMessage,
|
|
|
|
|
crypto,
|
|
|
|
|
colorConvert,
|
2022-08-14 05:51:45 -04:00
|
|
|
|
bruhifyText: function(message) {
|
2022-11-09 05:15:59 -05:00
|
|
|
|
if (
|
|
|
|
|
typeof message !== 'string'
|
|
|
|
|
) throw new SyntaxError('message must be a string');
|
2022-08-14 05:51:45 -04:00
|
|
|
|
bot.bruhifyText = message.substring(0, 1000);
|
|
|
|
|
},
|
2022-10-24 05:42:18 -04:00
|
|
|
|
generateEaglerUsername,
|
|
|
|
|
cowsay,
|
|
|
|
|
cows,
|
|
|
|
|
mcData,
|
2022-08-14 05:51:45 -04:00
|
|
|
|
},
|
|
|
|
|
};
|
|
|
|
|
bot.vm = new VM(bot.vmoptions);
|
|
|
|
|
|
|
|
|
|
loginfinish = true;
|
|
|
|
|
await sleep(1400);
|
2022-11-09 05:15:59 -05:00
|
|
|
|
bot.tellraw('@a', [
|
|
|
|
|
{
|
|
|
|
|
text: 'ChomeNS Bot',
|
|
|
|
|
color: 'yellow',
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
text: ' - ',
|
|
|
|
|
color: 'dark_gray',
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
text: 'made by ',
|
|
|
|
|
color: 'gray',
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
text: 'chayapak',
|
|
|
|
|
color: 'gold',
|
|
|
|
|
},
|
|
|
|
|
]);
|
2022-08-14 05:51:45 -04:00
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
bot.on('parsed_chat', async function(message, data) {
|
2022-11-09 05:15:59 -05:00
|
|
|
|
// try catch prevents hi % exploit (it uses prismarine-chat)
|
|
|
|
|
// and try catch also prevents json parse error
|
2022-08-14 05:51:45 -04:00
|
|
|
|
try {
|
2022-11-07 07:26:38 -05:00
|
|
|
|
if (previusMessage === message.toString()) return;
|
2022-09-13 09:05:19 -04:00
|
|
|
|
previusMessage = message.toString();
|
|
|
|
|
|
2022-08-14 05:51:45 -04:00
|
|
|
|
const parsedMessage = JSON.parse(data.message);
|
2022-11-07 07:26:38 -05:00
|
|
|
|
if (parsedMessage.translate === 'translation.test.invalid') return;
|
2022-10-15 02:19:37 -04:00
|
|
|
|
// down here it prevents command set message
|
2022-11-07 07:26:38 -05:00
|
|
|
|
if (parsedMessage.translate === 'advMode.setCommand.success') return;
|
2022-11-07 08:08:29 -05:00
|
|
|
|
if (parsedMessage.extra !== undefined) {
|
2022-11-07 07:26:38 -05:00
|
|
|
|
if (parsedMessage.extra[0].text === 'Command set: ') return;
|
2022-08-19 05:16:30 -04:00
|
|
|
|
}
|
2022-10-25 01:23:05 -04:00
|
|
|
|
// prevent braille cuz it CRASHES THE ENTIRE LAPTOP
|
|
|
|
|
if (message.toString().includes('⣿')) return;
|
2022-08-14 05:51:45 -04:00
|
|
|
|
|
2022-10-16 02:20:28 -04:00
|
|
|
|
const cleanMessage = escapeMarkdown(message.toAnsi(), true);
|
2022-11-09 05:15:59 -05:00
|
|
|
|
discordMsg = cleanMessage
|
|
|
|
|
.replaceAll('@', '@\u200b')
|
|
|
|
|
.replaceAll('http', 'http\u200b')
|
|
|
|
|
.replaceAll('\u001b[9', '\u001b[3');
|
2022-08-14 05:51:45 -04:00
|
|
|
|
|
2022-09-13 09:10:09 -04:00
|
|
|
|
consoleQueue.push(message.toAnsi());
|
2022-08-14 05:51:45 -04:00
|
|
|
|
|
2022-10-17 23:05:27 -04:00
|
|
|
|
if (message.toMotd().startsWith('§8[§eChomeNS §9Discord§8] §c')) return;
|
2022-10-16 03:33:23 -04:00
|
|
|
|
dcmsg.queue += '\n' + discordMsg;
|
2022-08-14 05:51:45 -04:00
|
|
|
|
} catch (e) {
|
|
|
|
|
return;
|
|
|
|
|
}
|
2022-10-18 05:18:38 -04:00
|
|
|
|
});
|
2022-08-14 05:51:45 -04:00
|
|
|
|
|
|
|
|
|
bot.on('player_added', (player) => {
|
|
|
|
|
bot.playersAddedPlayers[player.name] = player.UUID;
|
|
|
|
|
bot.getplayerusername[player.UUID] = player.name;
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
bot._client.on('end', function(reason) {
|
|
|
|
|
bot.emit('end', reason, 'end');
|
|
|
|
|
});
|
|
|
|
|
|
2022-11-09 05:15:59 -05:00
|
|
|
|
bot._client.on('keep_alive', (packet) => {
|
|
|
|
|
bot.write('keep_alive', {keepAliveId: packet.keepAliveId});
|
|
|
|
|
});
|
|
|
|
|
bot._client.on('game_state_change', () => {
|
|
|
|
|
bot.write('client_command', {payload: 0});
|
|
|
|
|
});
|
2022-08-19 03:16:30 -04:00
|
|
|
|
|
2022-08-14 05:51:45 -04:00
|
|
|
|
bot._client.on('kick_disconnect', function(data) {
|
|
|
|
|
const parsed = JSON.parse(data.reason);
|
|
|
|
|
bot.emit('end', parsed, 'kick_disconnect');
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
bot._client.on('disconnect', function(data) {
|
|
|
|
|
const parsed = JSON.parse(data.reason);
|
|
|
|
|
bot.emit('end', parsed, 'disconnect');
|
|
|
|
|
});
|
|
|
|
|
|
2022-10-26 08:53:12 -04:00
|
|
|
|
bot._client.on('error', function() {});
|
2022-08-14 05:51:45 -04:00
|
|
|
|
|
|
|
|
|
process.on('uncaughtException', (error) => {
|
|
|
|
|
console.log('uncaught ' + util.inspect(error));
|
2022-10-15 07:10:32 -04:00
|
|
|
|
channel.send('uncaught ```\n' + util.inspect(error) + '\n```');
|
2022-09-11 00:33:34 -04:00
|
|
|
|
bot.emit('end', 'uncaughtException', 'process: uncaughtException');
|
2022-08-14 05:51:45 -04:00
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
dcclient.on('ready', async () => {
|
|
|
|
|
botThings();
|
|
|
|
|
// Find the Discord channel messages will be sent to
|
2022-11-07 07:26:38 -05:00
|
|
|
|
if (process.argv[2] === 'sus.shhnowisnottheti.me') {
|
2022-08-14 05:51:45 -04:00
|
|
|
|
channel = dcclient.channels.cache.get(ayunboomchannel);
|
|
|
|
|
bot.channel = dcclient.channels.cache.get(ayunboomchannel);
|
|
|
|
|
}
|
2022-11-07 07:26:38 -05:00
|
|
|
|
if (process.argv[2] === '129.159.58.114') {
|
2022-08-14 05:51:45 -04:00
|
|
|
|
channel = dcclient.channels.cache.get(dinboomchannel);
|
|
|
|
|
bot.channel = dcclient.channels.cache.get(dinboomchannel);
|
|
|
|
|
}
|
2022-11-07 07:26:38 -05:00
|
|
|
|
if (process.argv[2] === 'kaboom.pw') {
|
2022-08-14 05:51:45 -04:00
|
|
|
|
channel = dcclient.channels.cache.get(kaboomchannel);
|
|
|
|
|
bot.channel = dcclient.channels.cache.get(kaboomchannel);
|
|
|
|
|
}
|
2022-11-07 07:26:38 -05:00
|
|
|
|
if (process.argv[2] === '192.168.1.103') {
|
2022-08-14 05:51:45 -04:00
|
|
|
|
channel = dcclient.channels.cache.get(localclonechannel);
|
|
|
|
|
bot.channel = dcclient.channels.cache.get(localclonechannel);
|
|
|
|
|
}
|
2022-11-07 07:26:38 -05:00
|
|
|
|
if (process.argv[2] === 'kitsune.icu') {
|
2022-08-14 05:51:45 -04:00
|
|
|
|
channel = dcclient.channels.cache.get(kitsunechannel);
|
|
|
|
|
bot.channel = dcclient.channels.cache.get(kitsunechannel);
|
|
|
|
|
}
|
2022-11-07 07:26:38 -05:00
|
|
|
|
if (process.argv[2] === 'mc.chomens41793.ga') {
|
2022-08-20 22:21:23 -04:00
|
|
|
|
channel = dcclient.channels.cache.get(chomensserverchannel);
|
|
|
|
|
bot.channel = dcclient.channels.cache.get(chomensserverchannel);
|
|
|
|
|
}
|
2022-08-14 05:51:45 -04:00
|
|
|
|
await sleep(200);
|
|
|
|
|
main();
|
|
|
|
|
chomenschannel = dcclient.channels.cache.get(chomenschannel);
|
|
|
|
|
bot.hashchannel = dcclient.channels.cache.get(hashchannel);
|
|
|
|
|
bot.ownerhashchannel = dcclient.channels.cache.get(ownerhashchannel);
|
|
|
|
|
bot.channelId = channel.id;
|
|
|
|
|
attachmentlink = '';
|
|
|
|
|
|
|
|
|
|
// Console COMMANDS
|
|
|
|
|
rl.on('line', function(line) {
|
|
|
|
|
try {
|
2022-11-09 05:15:59 -05:00
|
|
|
|
if (line.toLowerCase() === '' ||
|
|
|
|
|
line.toLowerCase().startsWith(' ')) return;
|
2022-11-07 07:26:38 -05:00
|
|
|
|
if (line.toLowerCase() === '.exit' || line.toLowerCase() === '.end') {
|
2022-08-14 05:51:45 -04:00
|
|
|
|
bot.emit('end', 'end command');
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
if (line.toLowerCase().startsWith('.servereval ')) {
|
|
|
|
|
try {
|
2022-11-09 05:15:59 -05:00
|
|
|
|
bot.tellraw('@a', {
|
|
|
|
|
text: `${util.inspect(eval(`${line.substring(12)}`))}`,
|
|
|
|
|
color: 'green',
|
|
|
|
|
});
|
2022-08-14 05:51:45 -04:00
|
|
|
|
return;
|
|
|
|
|
} catch (err) {
|
2022-11-07 06:30:37 -05:00
|
|
|
|
bot.tellraw('@a', {text: `${util.inspect(err)}`, color: 'red'});
|
2022-08-14 05:51:45 -04:00
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
}
|
2022-11-07 07:26:38 -05:00
|
|
|
|
if (line === '.clearconsolequeue') {
|
2022-09-17 04:06:17 -04:00
|
|
|
|
consoleQueue = [];
|
2022-08-14 05:51:45 -04:00
|
|
|
|
return;
|
|
|
|
|
}
|
2022-11-07 07:26:38 -05:00
|
|
|
|
if (line === '.messagelogging on') {
|
2022-10-23 09:14:34 -04:00
|
|
|
|
messageloggingEnabled = true;
|
2022-10-19 08:22:26 -04:00
|
|
|
|
return;
|
|
|
|
|
}
|
2022-11-07 07:26:38 -05:00
|
|
|
|
if (line === '.messagelogging off') {
|
2022-10-23 09:14:34 -04:00
|
|
|
|
messageloggingEnabled = false;
|
2022-10-19 08:22:26 -04:00
|
|
|
|
return;
|
|
|
|
|
}
|
2022-11-07 07:26:38 -05:00
|
|
|
|
if (line === '.kill') process.exit();
|
2022-11-09 05:15:59 -05:00
|
|
|
|
if (line.startsWith('.')) {
|
|
|
|
|
return bot.command_handler.run(
|
|
|
|
|
'Console',
|
|
|
|
|
'§a§lConsole§r',
|
|
|
|
|
'*' + line.substring(1),
|
|
|
|
|
'c0ns0le-uuid',
|
|
|
|
|
);
|
|
|
|
|
}
|
|
|
|
|
bot.tellraw('@a', [
|
|
|
|
|
{
|
|
|
|
|
text: '[',
|
|
|
|
|
color: 'dark_gray',
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
text: `${bot.username} Console`,
|
|
|
|
|
color: 'gray',
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
text: '] ',
|
|
|
|
|
color: 'dark_gray',
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
text: 'chayapak ',
|
|
|
|
|
color: 'green',
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
text: '\u203a ',
|
|
|
|
|
color: 'dark_gray',
|
|
|
|
|
},
|
|
|
|
|
chatMessage.MessageBuilder.fromString('&7' + line),
|
|
|
|
|
]);
|
2022-08-14 05:51:45 -04:00
|
|
|
|
} catch (e) {
|
|
|
|
|
console.log(e);
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
// Redirect Discord messages to in-game chat
|
|
|
|
|
dcclient.on('messageCreate', async (message) => {
|
|
|
|
|
// Ignore messages from the bot itself
|
|
|
|
|
if (message.author.id === dcclient.user.id) return;
|
2022-10-26 08:17:14 -04:00
|
|
|
|
|
2022-08-14 05:51:45 -04:00
|
|
|
|
// Only handle messages in specified channel
|
|
|
|
|
if (message.channel.id != channel.id) return;
|
|
|
|
|
if (message.content.startsWith(config.discord.prefix)) return;
|
2022-10-26 08:17:14 -04:00
|
|
|
|
|
2022-08-14 08:51:48 -04:00
|
|
|
|
try {
|
2022-10-26 08:12:13 -04:00
|
|
|
|
const attachmentsComponent = [];
|
|
|
|
|
if (message.attachments) {
|
|
|
|
|
message.attachments.forEach((value) => {
|
|
|
|
|
attachmentsComponent.push({
|
|
|
|
|
text: ' [Attachment]',
|
|
|
|
|
color: 'green',
|
|
|
|
|
clickEvent: {
|
|
|
|
|
action: 'open_url',
|
|
|
|
|
value: value.proxyURL,
|
|
|
|
|
},
|
|
|
|
|
});
|
|
|
|
|
});
|
2022-08-14 05:51:45 -04:00
|
|
|
|
}
|
2022-10-26 08:12:13 -04:00
|
|
|
|
const component = [
|
|
|
|
|
{text: '[', color: 'dark_gray'},
|
2022-10-28 05:21:57 -04:00
|
|
|
|
{text: 'ChomeNS ', color: 'yellow',
|
|
|
|
|
clickEvent: {
|
|
|
|
|
action: 'open_url',
|
|
|
|
|
value: 'https://discord.gg/xdgCkUyaA4',
|
|
|
|
|
},
|
|
|
|
|
},
|
|
|
|
|
{text: 'Discord', color: 'blue',
|
|
|
|
|
clickEvent: {
|
|
|
|
|
action: 'open_url',
|
|
|
|
|
value: 'https://discord.gg/xdgCkUyaA4',
|
|
|
|
|
},
|
|
|
|
|
},
|
2022-10-26 08:12:13 -04:00
|
|
|
|
{text: '] ', color: 'dark_gray'},
|
2022-10-28 05:21:57 -04:00
|
|
|
|
{text: `${message.member.displayName}`, color: 'red',
|
|
|
|
|
clickEvent: {
|
|
|
|
|
action: 'copy_to_clipboard',
|
|
|
|
|
value: `${message.author.username}#${message.author.discriminator}`,
|
|
|
|
|
},
|
|
|
|
|
hoverEvent: {
|
|
|
|
|
action: 'show_text',
|
|
|
|
|
value: [
|
2022-11-09 05:15:59 -05:00
|
|
|
|
{
|
|
|
|
|
text: message.author.username,
|
|
|
|
|
color: 'white',
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
text: '#',
|
|
|
|
|
color: 'dark_gray',
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
text: message.author.discriminator,
|
|
|
|
|
color: 'gray',
|
|
|
|
|
},
|
2022-10-28 05:21:57 -04:00
|
|
|
|
'\n',
|
2022-11-09 05:15:59 -05:00
|
|
|
|
{
|
|
|
|
|
text: 'Click here to copy the tag to your clipboard',
|
|
|
|
|
color: 'green',
|
|
|
|
|
},
|
2022-10-28 05:21:57 -04:00
|
|
|
|
],
|
|
|
|
|
},
|
|
|
|
|
},
|
2022-10-26 08:12:13 -04:00
|
|
|
|
{text: ' › ', color: 'dark_gray'},
|
|
|
|
|
chatMessage.MessageBuilder.fromString('&7' + message.content),
|
|
|
|
|
attachmentsComponent.length === 0 ? '' : attachmentsComponent,
|
|
|
|
|
];
|
2022-11-07 06:30:37 -05:00
|
|
|
|
bot.tellraw('@a', component);
|
2022-08-14 08:51:48 -04:00
|
|
|
|
} catch (e) {
|
|
|
|
|
return;
|
2022-08-14 05:51:45 -04:00
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
dcclient.login(config.discord.token);
|