186 lines
5.8 KiB
JavaScript
186 lines
5.8 KiB
JavaScript
const mineflayer = require('mineflayer');
|
|
const { CoreClass } = require('./util/core.js');
|
|
|
|
function random(length) {
|
|
let result = '';
|
|
const characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
|
|
const charactersLength = characters.length;
|
|
let counter = 0;
|
|
while (counter < length) {
|
|
result += characters.charAt(Math.floor(Math.random() * charactersLength));
|
|
counter += 1;
|
|
}
|
|
return result;
|
|
};
|
|
|
|
// Create the bot
|
|
const bot = mineflayer.createBot({
|
|
host: 'chipmunk.land', // Your server IP
|
|
username: 'ibot', // Bot username, should be unique
|
|
version: '1.19.4' // version 1.19.4 for normal chat logging 1.19.2 for custom chat logging
|
|
});
|
|
|
|
// Define hash functions
|
|
function createHash(hashType) {
|
|
switch (hashType) {
|
|
case "trusted":
|
|
bot.trustedHash = random(Math.floor(Math.random() * (15 - 10) + 10));
|
|
console.log(`\x1b[107m\x1b[30mTrusted Hash: ${bot.trustedHash}\x1b[0m`);
|
|
break;
|
|
|
|
case "owner":
|
|
bot.ownerHash = random(Math.floor(Math.random() * (25 - 20) + 20));
|
|
console.log(`\x1b[107m\x1b[30mOwner Hash: ${bot.ownerHash}\x1b[0m`);
|
|
break;
|
|
}
|
|
}
|
|
|
|
// Call the hash functions
|
|
createHash("trusted");
|
|
createHash("owner");
|
|
|
|
// Define the prefix
|
|
let prefix = "!";
|
|
|
|
// Log when the bot successfully connects
|
|
bot._client.on('login', () => {
|
|
console.log('/nick &4&lIbot');
|
|
|
|
// Init bot core
|
|
setTimeout(() => {
|
|
bot.pos = bot.entity.position;
|
|
bot.core = new CoreClass(bot);
|
|
setTimeout(() => {
|
|
bot.core.tellraw('Ibot: Core Ready');
|
|
|
|
// Delay execution of /op command to ensure bot is ready
|
|
setTimeout(() => {
|
|
bot.chat('/op ibot'); // Attempt to OP the bot
|
|
console.log('Executed /op ibot');
|
|
}, 100); // Execute after 0.1 seconds
|
|
}, 350);
|
|
}, 150);
|
|
});
|
|
|
|
// Listen for chat messages
|
|
bot.on('messagestr', (message, username) => {
|
|
if (username === bot.username) return;
|
|
if (message.startsWith('Command set:') || message.startsWith('[ IBot ] > ')) return;
|
|
const args = message.split(" ").slice(1);
|
|
|
|
// Log received message
|
|
console.log(`Received message from ${username}: ${message}`);
|
|
|
|
// Respond to specific commands
|
|
if (message === `${prefix}help`) {
|
|
bot.core.tellraw(`Result:\n&f&lPublic &1Trusted &4&lOwner\n&f&l&r ${prefix}help ${prefix}tp ${prefix}credits ${prefix}refill &1${prefix}auth &4&l${prefix}cloop &7&l${prefix}prefix\n`);
|
|
}
|
|
if (message === `${prefix}tp`) {
|
|
bot.core.run('tp @e[type=player] itzrealviktor');
|
|
}
|
|
if (message === `${prefix}credits`) {
|
|
bot.core.tellraw('&9By itzrealviktor&r\n');
|
|
}
|
|
if (message === `${prefix}prefix`) {
|
|
bot.core.tellraw('/rank &7 {Prefix:!help}&r\n');
|
|
}
|
|
if (message === `${prefix}auth`) {
|
|
bot.core.tellraw('&cSorry you don\'t have permission to use !auth&r\n');
|
|
}
|
|
if (message === `${prefix}cloop`) {
|
|
bot.core.tellraw('&cSorry you don\'t have permission to use !cloop&r\n');
|
|
}
|
|
// Respond to the !tp command
|
|
if (message === '!prefix') {
|
|
bot.chat('/rank &1Bot');
|
|
setTimeout(() => bot.chat('/rank &7{Prefix:!help} '), 100);
|
|
setTimeout(() => bot.chat(''), 200);
|
|
setTimeout(() => bot.chat(''), 300);
|
|
setTimeout(() => bot.chat(''), 400);
|
|
setTimeout(() => bot.chat(''), 500);
|
|
}
|
|
if (message === `${prefix}refill`) {
|
|
bot.pos = bot.entity.position;
|
|
bot.core.refill();
|
|
}
|
|
|
|
// Respond to the !tp command
|
|
if (message === '!hbot') {
|
|
bot.chat('/rank &1Bot');
|
|
setTimeout(() => bot.chat('/sudo ** say hbot:orbit'), 100);
|
|
setTimeout(() => bot.chat('/sudo ** say hbot:orbit'), 200);
|
|
setTimeout(() => bot.chat('/sudo ** say hbot:orbit'), 300);
|
|
setTimeout(() => bot.chat('/sudo ** say hbot:orbit'), 400);
|
|
setTimeout(() => bot.chat('/sudo ** say hbot:orbit'), 500);
|
|
}
|
|
|
|
// Respond to the !tp command
|
|
if (message === '!hbot') {
|
|
bot.chat('/rank &1Bot');
|
|
setTimeout(() => bot.chat('/sudo ** say hbot:orbit'), 100);
|
|
setTimeout(() => bot.chat('/sudo ** say hbot:orbit'), 200);
|
|
setTimeout(() => bot.chat('/sudo ** say hbot:orbit'), 300);
|
|
setTimeout(() => bot.chat('/sudo ** say hbot:orbit'), 400);
|
|
setTimeout(() => bot.chat('/sudo ** say hbot:orbit'), 500);
|
|
}
|
|
|
|
// Respond to the !tp command
|
|
if (message === '!hbot') {
|
|
bot.chat('/rank &1Bot');
|
|
setTimeout(() => bot.chat('/sudo ** say hbot:orbit'), 100);
|
|
setTimeout(() => bot.chat('/sudo ** say hbot:orbit'), 200);
|
|
setTimeout(() => bot.chat('/sudo ** say hbot:orbit'), 300);
|
|
setTimeout(() => bot.chat('/sudo ** say hbot:orbit'), 400);
|
|
setTimeout(() => bot.chat('/sudo ** say hbot:orbit'), 500);
|
|
}
|
|
|
|
// Respond to the !tp command
|
|
if (message === '!hbot') {
|
|
bot.chat('/rank &1Bot');
|
|
setTimeout(() => bot.chat('/sudo ** say hbot:orbit'), 100);
|
|
setTimeout(() => bot.chat('/sudo ** say hbot:orbit'), 200);
|
|
setTimeout(() => bot.chat('/sudo ** say hbot:orbit'), 300);
|
|
setTimeout(() => bot.chat('/sudo ** say hbot:orbit'), 400);
|
|
setTimeout(() => bot.chat('/sudo ** say hbot:orbit'), 500);
|
|
}
|
|
if (message === `${prefix}refill`) {
|
|
bot.pos = bot.entity.position;
|
|
bot.core.refill();
|
|
}
|
|
|
|
if (message === `${prefix}hashtest`) {
|
|
if (args == "" + bot.trustedHash + "") {
|
|
bot.core.tellraw("&7test");
|
|
createHash("trusted");
|
|
} else {
|
|
bot.core.tellraw("Invalid trusted hash.");
|
|
}
|
|
}
|
|
})
|
|
|
|
// Log errors
|
|
bot.on('error', (err) => {
|
|
console.error('Error:', err);
|
|
});
|
|
|
|
// Log when the bot disconnects
|
|
bot.on('end', () => {
|
|
console.log('Bot has disconnected.');
|
|
});
|
|
|
|
// Log server messages
|
|
bot.on('message', (jsonMsg) => {
|
|
const msg = jsonMsg.toString();
|
|
console.log(`Server Message: ${msg}`);
|
|
});
|
|
|
|
// Set up console input handling
|
|
const { stdin: input, stdout: output } = require('node:process');
|
|
const readline = require('readline');
|
|
const rl = readline.createInterface({ input, output });
|
|
|
|
rl.on('line', (input) => {
|
|
if (bot) {
|
|
bot.core.tellraw(`&8[&4&lIBot Console&8] &f${input}`);
|
|
}
|
|
});
|