Compare commits
3 commits
Author | SHA1 | Date | |
---|---|---|---|
|
ad4f35bb4c | ||
|
e655f831d3 | ||
|
a140a2d12e |
68 changed files with 518 additions and 220 deletions
11
package-lock.json
generated
11
package-lock.json
generated
|
@ -1,11 +1,14 @@
|
||||||
{
|
{
|
||||||
"name": "FridayNightFunkinBoyfriendBot",
|
"name": "FridayNightFunkinBoyfriendBot",
|
||||||
"version": "v6.1.1",
|
|
||||||
"lockfileVersion": 3,
|
"lockfileVersion": 3,
|
||||||
"requires": true,
|
"requires": true,
|
||||||
"build": "1145",
|
"buildstring": {
|
||||||
"codename": "",
|
"version": "v6.1.2",
|
||||||
"url": "https://code.chipmunk.land/Parker2991/FridayNightFunkinBoyfriendBot",
|
"build": "1200",
|
||||||
|
"releaseDate": "11/22/24",
|
||||||
|
"codename": "§eHazardous §4Massacre",
|
||||||
|
"url": "https://code.chipmunk.land/Parker2991/FridayNightFunkinBoyfriendBot"
|
||||||
|
},
|
||||||
"packages": {
|
"packages": {
|
||||||
"": {
|
"": {
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
|
|
2
removed-scrapped-crap/README.md
Normal file
2
removed-scrapped-crap/README.md
Normal file
|
@ -0,0 +1,2 @@
|
||||||
|
this folder is for removed / scrapped concepts just in case people want to reimplement them
|
||||||
|
|
114
removed-scrapped-crap/trustedBroadcast.js
Normal file
114
removed-scrapped-crap/trustedBroadcast.js
Normal file
|
@ -0,0 +1,114 @@
|
||||||
|
const trustedPlayers = require('../data/trustedPlayers.json');
|
||||||
|
module.exports = (bot, options, config) => {
|
||||||
|
let component;
|
||||||
|
trustedPlayers.map((trusted) => {
|
||||||
|
/*component.push({
|
||||||
|
translate: "%s",
|
||||||
|
color: config.colors.commands.tertiary,
|
||||||
|
with: [
|
||||||
|
{ text: "ea" }
|
||||||
|
]
|
||||||
|
})*/
|
||||||
|
bot.on('message', (data) => {
|
||||||
|
try {
|
||||||
|
let stringMessage = bot.getMessageAsPrismarine(data)?.toString();
|
||||||
|
// console.log(JSON.stringify(data))
|
||||||
|
// console.log(data?.with[0]?.clickEvent);
|
||||||
|
// console.log(data.color);
|
||||||
|
// for (const players of bot.players) {
|
||||||
|
if (
|
||||||
|
/*
|
||||||
|
stringMessage.startsWith(`${trusted.player}`) &&
|
||||||
|
data.translate === "multiplayer.player.joined" &&
|
||||||
|
data.color === "yellow" &&
|
||||||
|
data.with.insertion === `${trusted.player}` &&
|
||||||
|
data?.with[0]?.clickEvent === `{action:'suggest_command',value:'/tell ${trusted.player} '}` &&*/
|
||||||
|
JSON.stringify(data) ===
|
||||||
|
JSON.stringify({
|
||||||
|
color:'yellow',
|
||||||
|
translate:'multiplayer.player.joined',
|
||||||
|
with:[{insertion:`${trusted.player}`,
|
||||||
|
clickEvent:{
|
||||||
|
action:'suggest_command',
|
||||||
|
value:`/tell ${trusted.player} `
|
||||||
|
},
|
||||||
|
hoverEvent:{
|
||||||
|
action:'show_entity',
|
||||||
|
contents:{
|
||||||
|
type:'minecraft:player',
|
||||||
|
id:`${bot.players.find((player) => player.profile.name === trusted.player)?.uuid}`,
|
||||||
|
name:{
|
||||||
|
text:`${trusted.player}`
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
text:`${trusted.player}`
|
||||||
|
}]
|
||||||
|
})
|
||||||
|
) {
|
||||||
|
if (bot.players.map((e) => { e.profile.name === trusted.player })) {
|
||||||
|
bot.tellraw(`@a[name="${trusted.player}"]`, "e");
|
||||||
|
component = "e";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// bot.tellraw(`@a[name="${bot.players.find((player) => player.profile.name === trusted.player).profile.name}"]`, component);
|
||||||
|
/* for (const players of bot.players) {
|
||||||
|
// console.log(players);
|
||||||
|
if (players.profile.name === trusted.player) {
|
||||||
|
let e = players.profile.name === trusted.player;
|
||||||
|
for (const eachBot of bot.bots) {
|
||||||
|
eachBot.tellraw(`@a[name="${trusted.player}"]`, "e");
|
||||||
|
}
|
||||||
|
}*/
|
||||||
|
// }
|
||||||
|
//if (bot.players.find((player) => player.profile.name !== trusted.player)) return
|
||||||
|
//for (const eachBot of bot.bots) {
|
||||||
|
// if (bot.players.find((player) => player.profile.name === trusted.player)) {
|
||||||
|
// bot.tellraw(`@a[name="${bot.players.find((player) => player.profile.name === trusted.player).profile.name}"]`, "e");
|
||||||
|
// }
|
||||||
|
//}
|
||||||
|
// bot.chat.message(`${trusted.player} joined the game`);
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
} catch (e) {
|
||||||
|
console.log(e.stack);
|
||||||
|
}
|
||||||
|
})
|
||||||
|
})
|
||||||
|
/* bot.on('packet.login', (data) => {
|
||||||
|
console.log(bot.players.find((players) => players.profile.name === trusted.player))
|
||||||
|
console.log(bot.players)
|
||||||
|
if (bot.players.find((player) => player.profile.name === trusted.player)) {
|
||||||
|
bot.chat.message('player joined the game')
|
||||||
|
}
|
||||||
|
})
|
||||||
|
multiplayer.player.joined
|
||||||
|
[{"insertion":"Parker2991","clickEvent":{"action":"suggest_command",
|
||||||
|
"value":"/tell Parker2991 "},"hoverEvent":{"action":"show_entity",
|
||||||
|
"contents":{"type":"minecraft:player",
|
||||||
|
"id":"85f5b68d-a567-3877-9701-3cd7404bc9d9",
|
||||||
|
"name":{"text":"Parker2991"}}},"text":"Parker2991"}]
|
||||||
|
[
|
||||||
|
{
|
||||||
|
insertion: 'Parker2991',
|
||||||
|
clickEvent: { action: 'suggest_command', value: '/tell Parker2991 ' },
|
||||||
|
hoverEvent: { action: 'show_entity', contents: [Object] },
|
||||||
|
text: 'Parker2991'
|
||||||
|
}
|
||||||
|
]
|
||||||
|
yellow
|
||||||
|
*/
|
||||||
|
/*for (const trusted in trustedPlayers) {
|
||||||
|
component.push({
|
||||||
|
translate: '%s',
|
||||||
|
color: config.colors.commands.tertiary,
|
||||||
|
with: [
|
||||||
|
{ text: 'e' }
|
||||||
|
]
|
||||||
|
})
|
||||||
|
// console.log(component)
|
||||||
|
}*/
|
||||||
|
|
||||||
|
// bot.tellraw("@a", component)
|
||||||
|
|
||||||
|
}
|
|
@ -14,11 +14,10 @@ module.exports = {
|
||||||
"<command>",
|
"<command>",
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
async execute (context) {
|
execute (context) {
|
||||||
const bot = context.bot
|
const bot = context.bot
|
||||||
const message = context.arguments.join(' ');
|
const message = context.arguments.join(' ');
|
||||||
bot.core.run(message);
|
bot.core.runTracked(message);
|
||||||
await sleep(45);
|
|
||||||
/* bot.on('commandBlockOutput', (packet) => {
|
/* bot.on('commandBlockOutput', (packet) => {
|
||||||
bot.tellraw("@a", require('util').inspect(packet));
|
bot.tellraw("@a", require('util').inspect(packet));
|
||||||
console.log(packet);
|
console.log(packet);
|
||||||
|
|
|
@ -46,7 +46,7 @@ module.exports = {
|
||||||
switch (args[0]?.toLowerCase()) {
|
switch (args[0]?.toLowerCase()) {
|
||||||
case "about":
|
case "about":
|
||||||
component.push({
|
component.push({
|
||||||
text: `FNFBoyfriendBot is a kaboom bot created by Parker2991\nThe source code and changelog can be found here ${botInfo.url}`,
|
text: `FNFBoyfriendBot is a kaboom bot created by Parker2991\nThe source code and changelog can be found here ${botInfo.buildstring.url}`,
|
||||||
color: `${config.colors.commands.primary}`,
|
color: `${config.colors.commands.primary}`,
|
||||||
translate: "",
|
translate: "",
|
||||||
hoverEvent: {
|
hoverEvent: {
|
||||||
|
@ -57,7 +57,7 @@ module.exports = {
|
||||||
},
|
},
|
||||||
clickEvent: {
|
clickEvent: {
|
||||||
action: "open_url",
|
action: "open_url",
|
||||||
value: `${botInfo.url}`
|
value: `${botInfo.buildstring.url}`
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
break;
|
break;
|
||||||
|
@ -153,7 +153,7 @@ module.exports = {
|
||||||
case "contributors":
|
case "contributors":
|
||||||
case "credits":
|
case "credits":
|
||||||
component.push({
|
component.push({
|
||||||
translate: "%s%s - %s\n%s:\n%s\n%s\n%s\n%s\n%s %s\n%s",
|
translate: "%s%s - %s\n%s:\n%s\n%s\n%s\n%s\n%s %s\n%s\n%s",
|
||||||
color: config.colors.commands.tertiary,
|
color: config.colors.commands.tertiary,
|
||||||
with: [
|
with: [
|
||||||
{ text: "Parker", color: "dark_red" },
|
{ text: "Parker", color: "dark_red" },
|
||||||
|
@ -166,7 +166,8 @@ module.exports = {
|
||||||
{ text: "aaa", color: "gold" },
|
{ text: "aaa", color: "gold" },
|
||||||
{ text: "Morgan", color: "green" },
|
{ text: "Morgan", color: "green" },
|
||||||
{ text: "Ankan", color: "dark_green" },
|
{ text: "Ankan", color: "dark_green" },
|
||||||
{ text: "TurtleKid", color: "green" }
|
{ text: "TurtleKid", color: "green" },
|
||||||
|
{ text: "Ploat/ImGloriz", color: "#cd8ccb" },
|
||||||
]
|
]
|
||||||
})
|
})
|
||||||
break;
|
break;
|
||||||
|
@ -191,6 +192,7 @@ module.exports = {
|
||||||
})
|
})
|
||||||
break;
|
break;
|
||||||
case "usages":
|
case "usages":
|
||||||
|
case "usage":
|
||||||
switch (args.slice(1).join(' ')?.toLowerCase()) {
|
switch (args.slice(1).join(' ')?.toLowerCase()) {
|
||||||
case "bot":
|
case "bot":
|
||||||
component.push({
|
component.push({
|
||||||
|
@ -310,26 +312,7 @@ module.exports = {
|
||||||
case "version":
|
case "version":
|
||||||
case "ver":
|
case "ver":
|
||||||
if (botInfo.codename === '') {
|
if (botInfo.codename === '') {
|
||||||
component.push({
|
|
||||||
translate: "%s %s %s-%s-%s%s\n%s - %s",
|
|
||||||
color: config.colors.commands.tertiary,
|
|
||||||
with: [
|
|
||||||
{ text: "Friday Night Funkin", color: "dark_blue" },
|
|
||||||
{ text: "Boyfriend", color: "dark_aqua" },
|
|
||||||
{ text: "Bot", color: "blue" },
|
|
||||||
{ text: `${botInfo.version}`, color: config.colors.integer },
|
|
||||||
{ text: "#" },
|
|
||||||
{ text: `${botInfo.build}`, color: config.colors.integer },
|
|
||||||
{ text: "11/22/22", color: config.colors.commands.primary },
|
|
||||||
{ text: `${new Date().toLocaleDateString("en-US", { timeZone: "America/CHICAGO" })}`, color: config.colors.commands.secondary },
|
|
||||||
]
|
|
||||||
})
|
|
||||||
/*
|
|
||||||
`§9Friday §9Night §9Funkin §3Boyfriend §1Bot§8§r-
|
|
||||||
${botInfo.version}-#${botInfo.build}-${botInfo.codename}\n11/22/22 -
|
|
||||||
${new Date().toLocaleDateString("en-US", { timeZone: "America/CHICAGO" })}
|
|
||||||
*/
|
|
||||||
} else {
|
|
||||||
component.push({
|
component.push({
|
||||||
translate: "%s %s %s-%s-%s%s-%s\n%s - %s",
|
translate: "%s %s %s-%s-%s%s-%s\n%s - %s",
|
||||||
color: config.colors.commands.tertiary,
|
color: config.colors.commands.tertiary,
|
||||||
|
@ -337,10 +320,27 @@ ${new Date().toLocaleDateString("en-US", { timeZone: "America/CHICAGO" })}
|
||||||
{ text: "Friday Night Funkin", color: "dark_blue" },
|
{ text: "Friday Night Funkin", color: "dark_blue" },
|
||||||
{ text: "Boyfriend", color: "dark_aqua" },
|
{ text: "Boyfriend", color: "dark_aqua" },
|
||||||
{ text: "Bot", color: "blue" },
|
{ text: "Bot", color: "blue" },
|
||||||
{ text: `${botInfo.version}`, color: config.colors.integer },
|
{ text: `${botInfo.buildstring.version}`, color: config.colors.integer },
|
||||||
{ text: "#" },
|
{ text: "#" },
|
||||||
{ text: `${botInfo.build}`, color: config.colors.integer },
|
{ text: `${botInfo.buildstring.build}`, color: config.colors.integer },
|
||||||
{ text: `${botInfo.codename}` },
|
{ text: `${botInfo.buildstring.releaseDate}`, color: config.colors.commands.secondary },
|
||||||
|
{ text: "11/22/22", color: config.colors.commands.primary },
|
||||||
|
{ text: `${new Date().toLocaleDateString("en-US", { timeZone: "America/CHICAGO" })}`, color: config.colors.commands.secondary },
|
||||||
|
]
|
||||||
|
})
|
||||||
|
} else {
|
||||||
|
component.push({
|
||||||
|
translate: "%s %s %s-%s-%s%s-%s-%s\n%s - %s",
|
||||||
|
color: config.colors.commands.tertiary,
|
||||||
|
with: [
|
||||||
|
{ text: "Friday Night Funkin", color: "dark_blue" },
|
||||||
|
{ text: "Boyfriend", color: "dark_aqua" },
|
||||||
|
{ text: "Bot", color: "blue" },
|
||||||
|
{ text: `${botInfo.buildstring.version}`, color: config.colors.integer },
|
||||||
|
{ text: "#" },
|
||||||
|
{ text: `${botInfo.buildstring.build}`, color: config.colors.integer },
|
||||||
|
{ text: `${botInfo.buildstring.releaseDate}`, color: config.colors.commands.secondary },
|
||||||
|
{ text: `${botInfo.buildstring.codename}` },
|
||||||
{ text: "11/22/22", color: config.colors.commands.primary },
|
{ text: "11/22/22", color: config.colors.commands.primary },
|
||||||
{ text: `${new Date().toLocaleDateString("en-US", { timeZone: "America/CHICAGO" })}`, color: config.colors.commands.secondary },
|
{ text: `${new Date().toLocaleDateString("en-US", { timeZone: "America/CHICAGO" })}`, color: config.colors.commands.secondary },
|
||||||
]
|
]
|
||||||
|
|
32
src/commands/public/memusage.js
Normal file
32
src/commands/public/memusage.js
Normal file
|
@ -0,0 +1,32 @@
|
||||||
|
module.exports = {
|
||||||
|
data: {
|
||||||
|
name: 'memusage',
|
||||||
|
trustLevel: 0,
|
||||||
|
aliases: [
|
||||||
|
],
|
||||||
|
description: 'check the bots and the servers ram usage',
|
||||||
|
usages: [
|
||||||
|
"on/enable/true",
|
||||||
|
"off/disable/false",
|
||||||
|
],
|
||||||
|
},
|
||||||
|
execute (context) {
|
||||||
|
const bot = context.bot
|
||||||
|
const args = context.arguments;
|
||||||
|
switch (args[0]?.toLowerCase()) {
|
||||||
|
case "on":
|
||||||
|
case "enable":
|
||||||
|
case "true":
|
||||||
|
bot.memUsage.enabled = true;
|
||||||
|
bot.chat.message('enabled memusage');
|
||||||
|
break;
|
||||||
|
case "off":
|
||||||
|
case "enable":
|
||||||
|
case "false":
|
||||||
|
bot.memUsage.enabled = false;
|
||||||
|
bot.chat.message('disabled memusage');
|
||||||
|
break;
|
||||||
|
throw new CommandError({ translate: "command.unknown.argument", color: "dark_red" });
|
||||||
|
}
|
||||||
|
},
|
||||||
|
}
|
|
@ -1,6 +1,6 @@
|
||||||
const wiki = require('wikipedia')
|
const wiki = require('wikipedia');
|
||||||
const CommandError = require('../../util/command_error')
|
const CommandError = require('../../util/command_error');
|
||||||
const { EmbedBuilder } = require('discord.js')
|
const { EmbedBuilder } = require('discord.js');
|
||||||
module.exports = {
|
module.exports = {
|
||||||
data: {
|
data: {
|
||||||
name: 'wiki',
|
name: 'wiki',
|
||||||
|
@ -10,23 +10,23 @@ module.exports = {
|
||||||
'wikipedia'
|
'wikipedia'
|
||||||
],
|
],
|
||||||
usages:[
|
usages:[
|
||||||
"<definition>"
|
"<article>"
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
async execute (context) {
|
async execute (context) {
|
||||||
const source = context.source
|
const source = context.source;
|
||||||
const args = context.arguments
|
const args = context.arguments;
|
||||||
const bot = context.bot
|
const bot = context.bot;
|
||||||
try {
|
try {
|
||||||
const page = await wiki.page(args.join(' '))
|
const page = await wiki.page(args.join(' '))
|
||||||
const summary = await page.intro();
|
const summary = await page.intro();
|
||||||
bot.tellraw(`@a`, { text: `${summary}`, color: 'gray' });
|
bot.tellraw(`@a`, { text: `${summary}`, color: 'gray' });
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
if (error.toString() === "pageError: TypeError: Cannot read properties of undefined (reading 'pages')") {
|
if (error.toString() === "pageError: TypeError: Cannot read properties of undefined (reading 'pages')") {
|
||||||
bot.tellraw(`@a`, { text: 'Definition not found!', color: 'dark_red' })
|
bot.tellraw(`@a`, { text: 'Article not found!', color: 'dark_red' })
|
||||||
} else {
|
} else {
|
||||||
bot.tellraw(`@a`, `${error.toString()}`)
|
bot.tellraw(`@a`, `${error.toString()}`)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -3,7 +3,7 @@ const CommandError = require('../../util/command_error')
|
||||||
module.exports = {
|
module.exports = {
|
||||||
data: {
|
data: {
|
||||||
name: 'tpr',
|
name: 'tpr',
|
||||||
description: 'teleport to a random place',
|
description: 'teleport to very fucked up coords',
|
||||||
trustLevel: 1,
|
trustLevel: 1,
|
||||||
aliases: [
|
aliases: [
|
||||||
'rtp',
|
'rtp',
|
||||||
|
|
|
@ -1,17 +1,21 @@
|
||||||
prefixes:
|
prefixes:
|
||||||
- "!"
|
- "!"
|
||||||
|
|
||||||
discord:
|
discord:
|
||||||
token: "discord token here"
|
token: "discord token here"
|
||||||
prefix: "!"
|
prefix: "!"
|
||||||
invite: "discord invite here"
|
invite: "discord invite here"
|
||||||
|
enabled: true
|
||||||
roles:
|
roles:
|
||||||
trusted: "trusted"
|
trusted: "trusted"
|
||||||
admin: "admin"
|
admin: "admin"
|
||||||
owner: "FNFBoyfriendBot Owner"
|
owner: "FNFBoyfriendBot Owner"
|
||||||
|
|
||||||
core:
|
core:
|
||||||
|
# core refill methods:
|
||||||
|
# chat: refill core in chat
|
||||||
|
# item refill core in a command block placed by the bot
|
||||||
name: {"translate":"outOfMemory.message"}
|
name: {"translate":"outOfMemory.message"}
|
||||||
|
method: 'item'
|
||||||
area:
|
area:
|
||||||
start:
|
start:
|
||||||
x: 0
|
x: 0
|
||||||
|
|
19
src/data/fileFormats/command/commonJSCommandFormat.js
Normal file
19
src/data/fileFormats/command/commonJSCommandFormat.js
Normal file
|
@ -0,0 +1,19 @@
|
||||||
|
module.exports = {
|
||||||
|
data: {
|
||||||
|
name: '<command name>',
|
||||||
|
trustLevel: 0, // trust levels: 0, 1, 2, 3, 4
|
||||||
|
aliases: [
|
||||||
|
""
|
||||||
|
],
|
||||||
|
description: '',
|
||||||
|
usages: [
|
||||||
|
""
|
||||||
|
],
|
||||||
|
},
|
||||||
|
execute (context) {
|
||||||
|
|
||||||
|
},
|
||||||
|
discordExecute (context) {
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
19
src/data/fileFormats/command/es6JSCommandFormat.mjs
Normal file
19
src/data/fileFormats/command/es6JSCommandFormat.mjs
Normal file
|
@ -0,0 +1,19 @@
|
||||||
|
export default {
|
||||||
|
data: {
|
||||||
|
name: '<command name>',
|
||||||
|
trustLevel: 0, // trust levels: 0, 1, 2, 3, 4
|
||||||
|
aliases: [
|
||||||
|
|
||||||
|
],
|
||||||
|
description: '',
|
||||||
|
usages: [
|
||||||
|
""
|
||||||
|
],
|
||||||
|
},
|
||||||
|
execute (context) {
|
||||||
|
|
||||||
|
},
|
||||||
|
discordExecute (context) {
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
4
src/data/fileFormats/module/commonjs/withFunction.js
Normal file
4
src/data/fileFormats/module/commonjs/withFunction.js
Normal file
|
@ -0,0 +1,4 @@
|
||||||
|
function whatevername (bot, options, config, discordClient) {
|
||||||
|
|
||||||
|
}
|
||||||
|
module.exports = whatevername
|
3
src/data/fileFormats/module/commonjs/withoutFunction.js
Normal file
3
src/data/fileFormats/module/commonjs/withoutFunction.js
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
module.exports = (bot, options, config, discordClient) => {
|
||||||
|
|
||||||
|
}
|
3
src/data/fileFormats/module/es6/es6Module.mjs
Normal file
3
src/data/fileFormats/module/es6/es6Module.mjs
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
export default function () {
|
||||||
|
|
||||||
|
}
|
|
@ -1 +0,0 @@
|
||||||
[{"ignoreCase":false,"regexed":false,"name":"04928"},{"ignoreCase":false,"regexed":false,"name":"04928"},{"ignoreCase":false,"regexed":false,"name":"04928"},{"ignoreCase":false,"regexed":false,"name":"04928"},{"ignoreCase":false,"regexed":false,"name":"Parker2991"}]
|
|
|
@ -9,6 +9,7 @@ const { Client, GatewayIntentBits } = require('discord.js');
|
||||||
const { MessageContent, GuildMessages, Guilds } = GatewayIntentBits;
|
const { MessageContent, GuildMessages, Guilds } = GatewayIntentBits;
|
||||||
const discordClient = new Client({ intents: [Guilds, GuildMessages, MessageContent] });
|
const discordClient = new Client({ intents: [Guilds, GuildMessages, MessageContent] });
|
||||||
console.log('Starting FNFBoyfriendBot');
|
console.log('Starting FNFBoyfriendBot');
|
||||||
|
process.stdout.write('\x1b]2;Starting FNFBoyfriendBot please wait,.....\x1b\x5c')
|
||||||
checks();
|
checks();
|
||||||
|
|
||||||
try {
|
try {
|
||||||
|
@ -16,10 +17,15 @@ try {
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
console.log(e.stack);
|
console.log(e.stack);
|
||||||
}
|
}
|
||||||
|
if (config.core.method !== 'item' && config.core.method !== 'chat') {
|
||||||
|
config.core.method = 'item';
|
||||||
|
console.warn('invalid core method type defaulting to item');
|
||||||
|
}
|
||||||
const rl = readline.createInterface({
|
const rl = readline.createInterface({
|
||||||
input: process.stdin,
|
input: process.stdin,
|
||||||
output: process.stdout,
|
output: process.stdout,
|
||||||
})
|
})
|
||||||
|
//console.log(completion);
|
||||||
if (config.discord.enabled) discordClient.login(config.discord.token);
|
if (config.discord.enabled) discordClient.login(config.discord.token);
|
||||||
const bots = [];
|
const bots = [];
|
||||||
for (const options of config.bots) {
|
for (const options of config.bots) {
|
||||||
|
|
|
@ -1,4 +1,8 @@
|
||||||
function boot (bot, options, discordClient, config) {
|
|
||||||
|
function boot (context) {
|
||||||
|
const bot = context.bot;
|
||||||
|
const config = context.config;
|
||||||
|
const options = context.options;
|
||||||
bot.on("packet.login", (data) => {
|
bot.on("packet.login", (data) => {
|
||||||
if (bot.options.isCreayun) return
|
if (bot.options.isCreayun) return
|
||||||
if (new Date().getDay() === 5) {
|
if (new Date().getDay() === 5) {
|
||||||
|
@ -6,7 +10,9 @@ function boot (bot, options, discordClient, config) {
|
||||||
} else {
|
} else {
|
||||||
bot.chat.message('&9FNF&3Boyfriend&1Bot &fcreated by &4Parker&02991');
|
bot.chat.message('&9FNF&3Boyfriend&1Bot &fcreated by &4Parker&02991');
|
||||||
}
|
}
|
||||||
}) // &9 &3 &1
|
})
|
||||||
|
setInterval(() => {
|
||||||
|
process.stdout.write(`\x1b]2; FNFBoyfriendBot | Time: ${new Date().toLocaleString("en-US",{timeZone: "America/CHICAGO"})} | \x1b\x5c`)
|
||||||
|
}, 1000)
|
||||||
}
|
}
|
||||||
module.exports = boot;
|
module.exports = boot;
|
||||||
|
|
||||||
|
|
|
@ -12,8 +12,11 @@ function tryParse (json) {
|
||||||
return { text: '' }
|
return { text: '' }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
//what was changed??
|
//what was changed?
|
||||||
function chat (bot, options, config) {
|
function chat (context) {
|
||||||
|
const bot = context.bot;
|
||||||
|
const config = context.config;
|
||||||
|
const options = context.options;
|
||||||
let ChatMessage
|
let ChatMessage
|
||||||
bot.on('registry_ready', registry => {
|
bot.on('registry_ready', registry => {
|
||||||
ChatMessage = loadPrismarineChat(registry)
|
ChatMessage = loadPrismarineChat(registry)
|
||||||
|
|
|
@ -1,6 +1,9 @@
|
||||||
const CommandSource = require('../util/command_source');
|
const CommandSource = require('../util/command_source');
|
||||||
module.exports = (bot, options, config) => {
|
module.exports = (context) => {
|
||||||
let ratelimit = 0;
|
let ratelimit = 0;
|
||||||
|
const bot = context.bot;
|
||||||
|
const config = context.config;
|
||||||
|
const options = context.options;
|
||||||
bot.on("parsed_message", (data) => {
|
bot.on("parsed_message", (data) => {
|
||||||
if (data.type !== "minecraft:chat") return;
|
if (data.type !== "minecraft:chat") return;
|
||||||
const prefixes = config.prefixes;
|
const prefixes = config.prefixes;
|
||||||
|
|
|
@ -1,5 +1,9 @@
|
||||||
function core (bot, options, config) {
|
const mcData = require('minecraft-data')('1.20.2');
|
||||||
let number = 0;
|
|
||||||
|
function core (context) {
|
||||||
|
const bot = context.bot;
|
||||||
|
const config = context.config;
|
||||||
|
const options = context.options;
|
||||||
bot.core = {
|
bot.core = {
|
||||||
area: {
|
area: {
|
||||||
start: config.core?.area.start ?? { x: 0, y: 0, z: 0 },
|
start: config.core?.area.start ?? { x: 0, y: 0, z: 0 },
|
||||||
|
@ -25,7 +29,51 @@ function core (bot, options, config) {
|
||||||
it will not refill core until the pos is not NaN
|
it will not refill core until the pos is not NaN
|
||||||
instead of tping to a set cords cuz fuck you im not doing that
|
instead of tping to a set cords cuz fuck you im not doing that
|
||||||
*/
|
*/
|
||||||
bot.chat.command(`minecraft:fill ${pos.x + start.x} ${pos.y + start.y} ${pos.z + start.z} ${pos.x + end.x} ${pos.y + end.y} ${pos.z + end.z} repeating_command_block{CustomName:'${JSON.stringify(config.core.name)}'}`)
|
const command = `minecraft:fill ${pos.x + start.x} ${pos.y + start.y} ${pos.z + start.z} ${pos.x + end.x} ${pos.y + end.y} ${pos.z + end.z} repeating_command_block{CustomName:'${JSON.stringify(config.core.name)}'} destroy`
|
||||||
|
if (config.core.method === 'chat') {
|
||||||
|
bot.chat.command(`${command}`)
|
||||||
|
} else if (config.core.method === 'item') {
|
||||||
|
bot._client.write('set_creative_slot', {
|
||||||
|
slot: 36,
|
||||||
|
item: {
|
||||||
|
present: true,
|
||||||
|
itemId: mcData.itemsByName.command_block.id,
|
||||||
|
itemCount: 1,
|
||||||
|
nbtData: { }
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
bot._client.write('block_dig', {
|
||||||
|
status: 0,
|
||||||
|
location: {
|
||||||
|
x: bot.position.x,
|
||||||
|
y: bot.position.y,
|
||||||
|
z: bot.position.z
|
||||||
|
},
|
||||||
|
face: 0
|
||||||
|
});
|
||||||
|
|
||||||
|
bot._client.write('block_place', {
|
||||||
|
hand: 0,
|
||||||
|
location: {
|
||||||
|
x: bot.position.x,
|
||||||
|
y: bot.position.y,
|
||||||
|
z: bot.position.z
|
||||||
|
},
|
||||||
|
direction: 0,
|
||||||
|
cursorX: 0.1,
|
||||||
|
cursorY: 0,
|
||||||
|
cursorZ: 0.1,
|
||||||
|
insideBlock: false
|
||||||
|
});
|
||||||
|
|
||||||
|
bot._client.write('update_command_block', {
|
||||||
|
location: bot.position,
|
||||||
|
command,
|
||||||
|
flags: 5,
|
||||||
|
mode: 1
|
||||||
|
})
|
||||||
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
move (pos = bot.position) {
|
move (pos = bot.position) {
|
||||||
|
@ -76,15 +124,61 @@ function core (bot, options, config) {
|
||||||
} else {
|
} else {
|
||||||
bot._client.write('update_command_block', { command: command.substring(0, 32767), location, mode: 1, flags: 0b100 });
|
bot._client.write('update_command_block', { command: command.substring(0, 32767), location, mode: 1, flags: 0b100 });
|
||||||
bot._client.write('query_block_nbt', ({ location: location, transactionId: eee}));
|
bot._client.write('query_block_nbt', ({ location: location, transactionId: eee}));
|
||||||
bot.core.incrementCurrentBlock()
|
bot.core.incrementCurrentBlock();
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
|
runTracked (command) {
|
||||||
|
const transactionId = Math.floor(Math.random() * 1000);
|
||||||
|
const location = bot.core.currentBlock();
|
||||||
|
if (!location) return;
|
||||||
|
|
||||||
|
if (bot.position.y !== bot.core.position.y) {
|
||||||
|
bot.chat.command(`minecraft:tp ${bot.core.position.x} ${bot.core.position.y} ${bot.core.position.z}`)
|
||||||
|
}
|
||||||
|
|
||||||
|
bot._client.write('update_command_block', {
|
||||||
|
command: command.substring(0, 32767),
|
||||||
|
location,
|
||||||
|
flags: 5,
|
||||||
|
mode: 1,
|
||||||
|
// LastOutput: true,
|
||||||
|
});
|
||||||
|
|
||||||
|
bot.core.incrementCurrentBlock();
|
||||||
|
|
||||||
|
bot._client.write('query_block_nbt', {
|
||||||
|
location,
|
||||||
|
transactionId
|
||||||
|
});
|
||||||
|
|
||||||
|
bot.on('packet.nbt_query_response', (data) => {
|
||||||
|
// transactionId,
|
||||||
|
try {
|
||||||
|
if (data.transactionId === transactionId) {
|
||||||
|
bot.tellraw("@a", require('util').inspect(data.value))
|
||||||
|
bot.tellraw("@a", JSON.stringify(data.value))
|
||||||
|
}
|
||||||
|
} catch (e) {
|
||||||
|
bot.tellraw("@a", require("util").inspect(e.stack));
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (bot.options.isSavage || bot.options.isCreayun) return
|
if (bot.options.isSavage || bot.options.isCreayun) return
|
||||||
bot.on('move', () => {
|
bot.on('move', () => {
|
||||||
bot.core.move(bot.position)
|
bot.core.move(bot.position)
|
||||||
})
|
})
|
||||||
}
|
|
||||||
|
|
||||||
|
bot.on('packet.block_change', (data) => {
|
||||||
|
// console.log('data pos ' + JSON.stringify(data.location))
|
||||||
|
// console.log('core pos ' +JSON.stringify(bot.core.position));
|
||||||
|
if (data.type === 0) {
|
||||||
|
// console.log('data pos ' + JSON.stringify(data.location));
|
||||||
|
// console.log('core position ' + JSON.stringify(bot.core.position));
|
||||||
|
// bot.core.refill();
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
module.exports = core;
|
module.exports = core;
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
function command_loop (bot, options, config) {
|
function command_loop (context) {
|
||||||
|
const bot = context.bot;
|
||||||
bot.cloop = {
|
bot.cloop = {
|
||||||
list: [],
|
list: [],
|
||||||
add (command, interval) {
|
add (command, interval) {
|
||||||
|
|
|
@ -3,7 +3,12 @@ const path = require('path');
|
||||||
const CommandError = require('../util/command_error.js');
|
const CommandError = require('../util/command_error.js');
|
||||||
const CommandSource = require('../util/command_source');
|
const CommandSource = require('../util/command_source');
|
||||||
const { EmbedBuilder } = require('discord.js');
|
const { EmbedBuilder } = require('discord.js');
|
||||||
async function command_manager (bot, options, config, discordClient) {
|
|
||||||
|
async function command_manager (context) {
|
||||||
|
const bot = context.bot;
|
||||||
|
const config = context.config;
|
||||||
|
const discordClient = context.discordClient;
|
||||||
|
const options = context.options;
|
||||||
bot.commandManager = {
|
bot.commandManager = {
|
||||||
commands: {},
|
commands: {},
|
||||||
commandlist: [],
|
commandlist: [],
|
||||||
|
@ -43,29 +48,45 @@ async function command_manager (bot, options, config, discordClient) {
|
||||||
]
|
]
|
||||||
})?.toAnsi())
|
})?.toAnsi())
|
||||||
}
|
}
|
||||||
if (command?.data?.trustLevel > 0) {
|
|
||||||
const event = bot.discord.message;
|
const event = bot.discord.message;
|
||||||
const roles = event?.member?.roles?.cache;
|
const roles = event?.member?.roles?.cache;
|
||||||
if (command?.data?.trustLevel === 1 && !source?.sources?.discord) {
|
switch (command?.data?.trustLevel) {
|
||||||
if (args.length === 0 && bot.validation.trusted && bot.validation.admin && bot.validation.owner && !source?.sources?.console) throw new CommandError({ text: "Please provide an trusted or an admin or an owner hash", color: "dark_red" })
|
case 0:
|
||||||
if (args[0] !== bot.validation.trusted && args[0] !== bot.validation.admin && args[0] !== bot.validation.owner && !source.sources.console) throw new CommandError({ translate: 'Invalid trusted or admin or owner hash', color: 'dark_red' });
|
// do nothing since trust level 0 is public
|
||||||
} else if (command?.data?.trustLevel === 1 && source?.sources.discord) {
|
break;
|
||||||
const hasRole = roles?.some(role => role.name === `${config.discord.roles.trusted}` || role.name === `${config.discord.roles.owner}`)
|
case 1:
|
||||||
|
if (source?.sources?.discord) {
|
||||||
|
const hasRole = roles?.some(role => role.name === `${config.discord.roles.trusted}` || role.name === `${config.discord.roles.admin}` || role.name === `${config.discord.roles.owner}`)
|
||||||
if (!hasRole) throw new CommandError({ translate: 'You are not trusted or the owner!', color: "dark_red" })
|
if (!hasRole) throw new CommandError({ translate: 'You are not trusted or the owner!', color: "dark_red" })
|
||||||
}
|
} else if (!source?.sources.console) {
|
||||||
if (command?.data?.trustLevel === 2 && !source.sources.console) {
|
if (args.length === 0) throw new CommandError({ text: "Please provide a trusted, admin or owner hash", color: "dark_red" });
|
||||||
if (args.length === 0 && bot.validation.admin && bot.validation.owner && !source.sources.console) throw new CommandError({ text: "Please provide an trusted or owner hash", color: 'dark_red' })
|
if (args[0] !== bot.validation.trusted && args[0] !== bot.validation.admin && args[0] !== bot.validation.owner) throw new CommandError({ translate: 'Invalid trusted, admin or owner hash', color: 'dark_red' });
|
||||||
if (args[0] !== bot.validation.admin && args[0] !== bot.validation.owner && !source.sources.console) throw new CommandError({ translate: 'Invalid trusted or owner hash', color: 'dark_red' });
|
}
|
||||||
}
|
break;
|
||||||
if (command?.data?.trustLevel === 3 && !source.sources.discord && !source.sources.console) {
|
case 2:
|
||||||
if (args.length === 0 && bot.validation.owner) throw new CommandError({ text: "Please provide an owner hash", color: "dark_red" })
|
if (source?.sources?.discord) {
|
||||||
if (args[0] !== bot.validation.owner) throw new CommandError({ translate: 'Invalid owner hash', color: 'dark_red' })
|
const hasRole = roles?.some(role => role.name === `${config.discord.roles.admin}` || role.name === `${config.discord.roles.owner}`)
|
||||||
} else if (command?.data?.trustLevel === 3 && source.sources.discord && !source.sources.console) {
|
if (!hasRole) throw new CommandError({ translate: 'You are not trusted or the owner!', color: "dark_red" })
|
||||||
const hasRole = roles?.some(role => role.name === `${config.discord.roles.owner}`)
|
} else if (!source?.sources?.console) {
|
||||||
if (!hasRole) throw new CommandError({ translate: 'You are not the owner!', color: "dark_red" })
|
if (args.length === 0) throw new CommandError({ text: "Please provide an admin or owner hash", color: 'dark_red' })
|
||||||
} else if (command?.data?.trustLevel === 4 && !source.sources.console) {
|
if (args[0] !== bot.validation.admin && args[0] !== bot.validation.owner) throw new CommandError({ translate: 'Invalid admin or owner hash', color: 'dark_red' });
|
||||||
throw new CommandError({ text: 'This command can only be ran via console', color: "dark_red" });
|
}
|
||||||
}
|
break;
|
||||||
|
case 3:
|
||||||
|
if (source?.sources?.discord) {
|
||||||
|
const hasRole = roles?.some(role => role.name === `${config.discord.roles.owner}`)
|
||||||
|
if (!hasRole) throw new CommandError({ translate: 'You are not the owner!', color: "dark_red" })
|
||||||
|
} else if (!source?.sources?.console) {
|
||||||
|
if (args.length === 0 && bot.validation.owner) throw new CommandError({ text: "Please provide an owner hash", color: "dark_red" })
|
||||||
|
if (args[0] !== bot.validation.owner) throw new CommandError({ translate: 'Invalid owner hash', color: 'dark_red' })
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 4:
|
||||||
|
if (!source?.sources?.console) {
|
||||||
|
throw new CommandError({ text: 'This command can only be ran via console', color: "dark_red" })
|
||||||
|
}
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
if (!command?.discordExecute && command && source?.sources?.discord) {
|
if (!command?.discordExecute && command && source?.sources?.discord) {
|
||||||
throw new CommandError(`${command.name} command is not supported in discord!`)
|
throw new CommandError(`${command.name} command is not supported in discord!`)
|
||||||
|
@ -81,7 +102,7 @@ async function command_manager (bot, options, config, discordClient) {
|
||||||
if (source?.sources?.discord && !source?.sources?.console) {
|
if (source?.sources?.discord && !source?.sources?.console) {
|
||||||
const Embed = new EmbedBuilder()
|
const Embed = new EmbedBuilder()
|
||||||
.setColor(`${config.colors.discord.error}`)
|
.setColor(`${config.colors.discord.error}`)
|
||||||
.setTitle(`${command?.name} command`)
|
.setTitle(`${command?.data?.name} command`)
|
||||||
.setDescription(`\`\`\`${error}\`\`\``)
|
.setDescription(`\`\`\`${error}\`\`\``)
|
||||||
bot?.discord?.message?.reply({
|
bot?.discord?.message?.reply({
|
||||||
embeds: [
|
embeds: [
|
||||||
|
|
|
@ -1,6 +1,10 @@
|
||||||
const CommandSource = require('../util/command_source');
|
const CommandSource = require('../util/command_source');
|
||||||
const prismarineChat = require('prismarine-chat')('1.20.2');
|
const prismarineChat = require('prismarine-chat')('1.20.2');
|
||||||
function Console (bot, options, config) {
|
|
||||||
|
function Console (context) {
|
||||||
|
const bot = context.bot;
|
||||||
|
const config = context.config;
|
||||||
|
const options = context.options;
|
||||||
let ratelimit = 0;
|
let ratelimit = 0;
|
||||||
bot.console = {
|
bot.console = {
|
||||||
readline: null,
|
readline: null,
|
||||||
|
@ -101,39 +105,9 @@ function Console (bot, options, config) {
|
||||||
bot.on('actionBar', (message) => {
|
bot.on('actionBar', (message) => {
|
||||||
if (!options.logging) return;
|
if (!options.logging) return;
|
||||||
if (ratelimit > 10) return
|
if (ratelimit > 10) return
|
||||||
// bot.console.log(bot.getMessageAsPrismarine(message)?.toAnsi());
|
bot.console.log(bot.getMessageAsPrismarine(message)?.toAnsi());
|
||||||
bot.console.fileLogger(`[${new Date().toLocaleTimeString("en-US", { timeZone: "America/CHICAGO", })} ${new Date().toLocaleDateString("en-US", { timeZone: "America/CHICAGO", })} logs] [${options.serverName}] ${bot.getMessageAsPrismarine(message)?.toString()}`);
|
bot.console.fileLogger(`[${new Date().toLocaleTimeString("en-US", { timeZone: "America/CHICAGO", })} ${new Date().toLocaleDateString("en-US", { timeZone: "America/CHICAGO", })} logs] [${options.serverName}] ${bot.getMessageAsPrismarine(message)?.toString()}`);
|
||||||
ratelimit++
|
ratelimit++
|
||||||
})
|
})
|
||||||
|
|
||||||
/*
|
|
||||||
setInterval(() => spamCount = 0, 1000 * 2)
|
|
||||||
|
|
||||||
bot.on('message', message => {
|
|
||||||
if (spamCount > 300) {
|
|
||||||
console.log('WTF spam detected not logging')
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
const ansi = bot.getMessageAsPrismarine(message)?.toAnsi()
|
|
||||||
const string = bot.getMessageAsPrismarine(message)?.toString()
|
|
||||||
const now = new Date().toLocaleString()
|
|
||||||
|
|
||||||
|
|
||||||
spamCount++
|
|
||||||
*/
|
|
||||||
|
|
||||||
/* bot.on('message', (message) => {
|
|
||||||
rateLimit++
|
|
||||||
setTimeout(() => {
|
|
||||||
rateLimit--
|
|
||||||
}, 1000)
|
|
||||||
if (!options.logging) return;
|
|
||||||
if (rateLimit > 100) {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
bot.console.log(bot.getMessageAsPrismarine(message)?.toAnsi());
|
|
||||||
bot.console.fileLogger(`[${new Date().toLocaleTimeString("en-US", { timeZone: "America/CHICAGO", })} ${new Date().toLocaleDateString("en-US", { timeZone: "America/CHICAGO", })} logs] [${options.serverName}] ${bot.getMessageAsPrismarine(message)?.toString()}`);
|
|
||||||
})*/
|
|
||||||
}
|
}
|
||||||
module.exports = Console;
|
module.exports = Console;
|
||||||
|
|
|
@ -6,8 +6,11 @@ const CommandSource = require('../util/command_source')
|
||||||
|
|
||||||
//const client = new Client({ intents: [Guilds, GuildMessages, MessageContent] })
|
//const client = new Client({ intents: [Guilds, GuildMessages, MessageContent] })
|
||||||
const util = require('util')
|
const util = require('util')
|
||||||
|
function discord (context) {
|
||||||
function discord(bot, options, config, discordClient) {
|
const bot = context.bot;
|
||||||
|
const config = context.config;
|
||||||
|
const discordClient = context.discordClient;
|
||||||
|
const options = context.options;
|
||||||
if (!options?.channelId) {
|
if (!options?.channelId) {
|
||||||
bot.discord = {
|
bot.discord = {
|
||||||
invite: config.discord?.invite
|
invite: config.discord?.invite
|
||||||
|
@ -82,7 +85,7 @@ function discord(bot, options, config, discordClient) {
|
||||||
if (message.content.startsWith(config.discord.prefix)) { // TODO: Don't hardcode this
|
if (message.content.startsWith(config.discord.prefix)) { // TODO: Don't hardcode this
|
||||||
const source = new CommandSource({
|
const source = new CommandSource({
|
||||||
profile: {
|
profile: {
|
||||||
name: message?.member?.displayName
|
name: `${message?.member.nickname || message?.author.displayName}`
|
||||||
}
|
}
|
||||||
}, {
|
}, {
|
||||||
discord: true,
|
discord: true,
|
||||||
|
@ -132,7 +135,7 @@ function discord(bot, options, config, discordClient) {
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
text: message?.member?.displayName
|
text: `${message.member.nickname || message.author.displayName}`,
|
||||||
},
|
},
|
||||||
message.content
|
message.content
|
||||||
]
|
]
|
||||||
|
|
|
@ -3,7 +3,10 @@ const path = require("path");
|
||||||
const { createGzip } = require("zlib");
|
const { createGzip } = require("zlib");
|
||||||
const readline = require('readline');
|
const readline = require('readline');
|
||||||
const { Console } = require("console");
|
const { Console } = require("console");
|
||||||
function fileLogger(bot, options, message) {
|
function fileLogger(context) {
|
||||||
|
const bot = context.bot;
|
||||||
|
const config = context.config;
|
||||||
|
const options = context.options;
|
||||||
const currentDate = new Date();
|
const currentDate = new Date();
|
||||||
const timestamp = `${currentDate.getFullYear()}-${(currentDate.getMonth() + 1)
|
const timestamp = `${currentDate.getFullYear()}-${(currentDate.getMonth() + 1)
|
||||||
.toString()
|
.toString()
|
||||||
|
|
37
src/modules/memusage.js
Normal file
37
src/modules/memusage.js
Normal file
|
@ -0,0 +1,37 @@
|
||||||
|
const os = require('os');
|
||||||
|
module.exports = (context) => {
|
||||||
|
const bot = context.bot;
|
||||||
|
const config = context.config;
|
||||||
|
let timer;
|
||||||
|
bot.memUsage = {
|
||||||
|
enabled: false
|
||||||
|
}
|
||||||
|
|
||||||
|
timer = setInterval(() => {
|
||||||
|
component = {
|
||||||
|
translate: "%s%s%s %s | %s: %s%s / %s%s | %s: %s%s / %s%s |",
|
||||||
|
color: config.colors.commands.tertiary,
|
||||||
|
with: [
|
||||||
|
{ text: "FNF", color: "dark_blue" },
|
||||||
|
{ text: "Boyfriend", color: "dark_aqua" },
|
||||||
|
{ text: "Bot", color: "blue" },
|
||||||
|
{ text: "Memory Usage" },
|
||||||
|
{ text: "Free Server Memory", color: config.colors.commands.primary },
|
||||||
|
{ text: `${Math.floor(os.freemem() / 1048576)}`, color: config.colors.integer },
|
||||||
|
{ text: "MiB", color: config.colors.commands.secondary },
|
||||||
|
{ text: `${Math.floor(os.totalmem() / 1048576)}`, color: config.colors.integer },
|
||||||
|
{ text: "MiB", color: config.colors.commands.secondary },
|
||||||
|
{ text: "Bot Memory Usage", color: config.colors.commands.primary },
|
||||||
|
{ text: `${Math.floor(process.memoryUsage().heapUsed / 1048576)}`, color: config.colors.integer },
|
||||||
|
{ text: "MiB", color: config.colors.commands.secondary },
|
||||||
|
{ text: `${Math.floor(process.memoryUsage().heapTotal / 1048576 )}`, color: config.colors.integer },
|
||||||
|
{ text: "MiB", color: config.colors.commands.secondary }
|
||||||
|
]
|
||||||
|
}
|
||||||
|
if (!bot.memUsage.enabled) return;
|
||||||
|
bot.core.run(`minecraft:title @a[tag=!memusage] actionbar ${JSON.stringify(component)}`)
|
||||||
|
}, 100)
|
||||||
|
bot.on('end', () => {
|
||||||
|
bot.memUsage.enabled = false;
|
||||||
|
})
|
||||||
|
}
|
|
@ -1,4 +1,7 @@
|
||||||
function player_list (bot, options, config) {
|
function player_list (context) {
|
||||||
|
const bot = context.bot;
|
||||||
|
const config = context.config;
|
||||||
|
const options = context.options;
|
||||||
bot.players = []
|
bot.players = []
|
||||||
|
|
||||||
bot.on('packet.player_info', async (packet) => {
|
bot.on('packet.player_info', async (packet) => {
|
||||||
|
|
|
@ -1,4 +1,6 @@
|
||||||
function position (bot, options, config) {
|
|
||||||
|
function position (context) {
|
||||||
|
const bot = context.bot;
|
||||||
bot.position = null
|
bot.position = null
|
||||||
|
|
||||||
bot.on('packet.position', packet => {
|
bot.on('packet.position', packet => {
|
||||||
|
|
|
@ -1,6 +1,9 @@
|
||||||
const mc = require('minecraft-protocol');
|
const mc = require('minecraft-protocol');
|
||||||
const usernameGen = require("../util/usernameGen");
|
const usernameGen = require("../util/usernameGen");
|
||||||
function reconnect (bot, options, config) {
|
function reconnect (context) {
|
||||||
|
const bot = context.bot;
|
||||||
|
const config = context.config;
|
||||||
|
const options = context.options;
|
||||||
bot.on('end', () => {
|
bot.on('end', () => {
|
||||||
//bot = undefined;
|
//bot = undefined;
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,7 @@
|
||||||
function selfcare (bot, options, config) {
|
function selfcare (context) {
|
||||||
|
const bot = context.bot;
|
||||||
|
const config = context.config;
|
||||||
|
const options = context.options;
|
||||||
let entityId;
|
let entityId;
|
||||||
let permissionLevel = 2;
|
let permissionLevel = 2;
|
||||||
let unmuted = false;
|
let unmuted = false;
|
||||||
|
@ -62,7 +65,7 @@ You already have registered this username!
|
||||||
else if (stringMessage?.startsWith("Successfully set your username to ")) username = true
|
else if (stringMessage?.startsWith("Successfully set your username to ")) username = true
|
||||||
else if (stringMessage === `You already have the username "${bot.username}"`) username = false
|
else if (stringMessage === `You already have the username "${bot.username}"`) username = false
|
||||||
else if (stringMessage === `You no longer have a nickname.`) nickname = false;
|
else if (stringMessage === `You no longer have a nickname.`) nickname = false;
|
||||||
else if (stringMessage.startsWith('Your nickname is now ')) nickname = true;
|
else if (stringMessage?.startsWith('Your nickname is now ')) nickname = true;
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|
|
@ -1,16 +1,17 @@
|
||||||
module.exports = (bot) => {
|
|
||||||
// let aaa cook
|
|
||||||
bot.tab_complete = (str) => {
|
|
||||||
return new Promise((resolve) => {
|
|
||||||
bot._client.write('tab_complete', {
|
|
||||||
text: str, assumeCommand: false, sendBlockInSight: false
|
|
||||||
})
|
|
||||||
const tab_completeH = (packet) => {
|
|
||||||
bot._client.removeListener('tab_complete', tab_completeH)
|
|
||||||
|
|
||||||
resolve(packet.matches)
|
module.exports = (context) => {
|
||||||
}
|
const bot = context.bot;
|
||||||
bot._client.once('tab_complete', tab_completeH)
|
// let aaa cook
|
||||||
})
|
bot.tab_complete = (str) => {
|
||||||
}
|
return new Promise((resolve) => {
|
||||||
|
bot._client.write('tab_complete', {
|
||||||
|
text: str, assumeCommand: false, sendBlockInSight: false
|
||||||
|
})
|
||||||
|
const tab_completeH = (packet) => {
|
||||||
|
bot._client.removeListener('tab_complete', tab_completeH)
|
||||||
|
resolve(packet.matches)
|
||||||
|
}
|
||||||
|
bot._client.once('tab_complete', tab_completeH)
|
||||||
|
})
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,5 +1,7 @@
|
||||||
const crypto = require('crypto')
|
const crypto = require('crypto')
|
||||||
function validation (bot, options, config) {
|
function validation (context) {
|
||||||
|
const bot = context.bot;
|
||||||
|
const config = context.config;
|
||||||
setInterval(() => {
|
setInterval(() => {
|
||||||
bot.validation = {
|
bot.validation = {
|
||||||
trusted: crypto.createHash('sha256').update(Math.floor(Date.now() / 1000) + config.keys.trusted).digest('hex').substring(0, 16),
|
trusted: crypto.createHash('sha256').update(Math.floor(Date.now() / 1000) + config.keys.trusted).digest('hex').substring(0, 16),
|
||||||
|
|
|
@ -15,55 +15,6 @@ function ansi (message) {
|
||||||
'\x1B[4m': "\x1B[24m", // underline
|
'\x1B[4m': "\x1B[24m", // underline
|
||||||
'\x1B[9m': "\x1B[29m", // strike through
|
'\x1B[9m': "\x1B[29m", // strike through
|
||||||
'\x1B[6m': "\x1B[29m" // obfuscated
|
'\x1B[6m': "\x1B[29m" // obfuscated
|
||||||
|
|
||||||
/*
|
|
||||||
Black 30 40
|
|
||||||
Red 31 41
|
|
||||||
Green 32 42
|
|
||||||
Yellow 33 43
|
|
||||||
Blue 34 44
|
|
||||||
Magenta 35 45
|
|
||||||
Cyan 36 46
|
|
||||||
White 37 47
|
|
||||||
Default 39 49
|
|
||||||
Reset 0 0
|
|
||||||
ESC[1;34;{...}m Set graphics modes for cell, separated by semicolon (;).
|
|
||||||
ESC[0m reset all modes (styles and colors)
|
|
||||||
ESC[1m ESC[22m set bold mode.
|
|
||||||
ESC[2m ESC[22m set dim/faint mode.
|
|
||||||
ESC[3m ESC[23m set italic mode.
|
|
||||||
ESC[4m ESC[24m set underline mode.
|
|
||||||
ESC[5m ESC[25m set blinking mode
|
|
||||||
ESC[7m ESC[27m set inverse/reverse mode
|
|
||||||
ESC[8m ESC[28m set hidden/invisible mode
|
|
||||||
ESC[9m ESC[29m set strikethrough mode.
|
|
||||||
*/
|
|
||||||
/*
|
|
||||||
const defaultAnsiCodes = {
|
|
||||||
'§0': '\u001b[30m',
|
|
||||||
'§1': '\u001b[34m',
|
|
||||||
'§2': '\u001b[32m',
|
|
||||||
'§3': '\u001b[36m',
|
|
||||||
'§4': '\u001b[31m',
|
|
||||||
'§5': '\u001b[35m',
|
|
||||||
'§6': '\u001b[33m',
|
|
||||||
'§7': '\u001b[37m',
|
|
||||||
'§8': '\u001b[90m',
|
|
||||||
'§9': '\u001b[94m',
|
|
||||||
'§a': '\u001b[92m',
|
|
||||||
'§b': '\u001b[96m',
|
|
||||||
'§c': '\u001b[91m',
|
|
||||||
'§d': '\u001b[95m',
|
|
||||||
'§e': '\u001b[93m',
|
|
||||||
'§f': '\u001b[97m',
|
|
||||||
'§l': '\u001b[1m',
|
|
||||||
'§o': '\u001b[3m',
|
|
||||||
'§n': '\u001b[4m',
|
|
||||||
'§m': '\u001b[9m',
|
|
||||||
'§k': '\u001b[6m',
|
|
||||||
'§r': '\u001b[0m'
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
};
|
};
|
||||||
let i = message;
|
let i = message;
|
||||||
|
|
||||||
|
|
|
@ -9,11 +9,11 @@ module.exports = () => {
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!fs.existsSync(path.join(__dirname, "../data/filter.json"))) {
|
/* if (!fs.existsSync(path.join(__dirname, "../data/filter.json"))) {
|
||||||
console.warn("filter json not found creating the file,......");
|
console.warn("filter json not found creating the file,......");
|
||||||
let data = [{ ignoreCase: false, regexed: false, name: 'whatever player username idfk' }]
|
let data = [{ ignoreCase: false, regexed: false, name: 'whatever player username idfk' }]
|
||||||
fs.writeFileSync(path.join(__dirname, "../data/filter.json"), JSON.stringify(data))
|
fs.writeFileSync(path.join(__dirname, "../data/filter.json"), JSON.stringify(data))
|
||||||
}
|
}*/
|
||||||
|
|
||||||
/*
|
/*
|
||||||
if (!fs.existsSync(path.join(__dirname, "../data/trustedPlayers.json"))) {
|
if (!fs.existsSync(path.join(__dirname, "../data/trustedPlayers.json"))) {
|
||||||
|
|
|
@ -1,38 +1,19 @@
|
||||||
const fs = require("fs");
|
const fs = require("fs");
|
||||||
const path = require("path");
|
const path = require("path");
|
||||||
async function loadModules (bot, options, config, discordClient) {
|
async function loadModules (bot, options, config, discordClient) {
|
||||||
// let module
|
|
||||||
bot.loadModule = module => module(bot, options, config, discordClient)
|
|
||||||
for (const filename of fs.readdirSync(path.join(__dirname, '../', 'modules'))) {
|
for (const filename of fs.readdirSync(path.join(__dirname, '../', 'modules'))) {
|
||||||
try {
|
try {
|
||||||
if (filename.endsWith(".mjs")) {
|
if (filename.endsWith(".js")) {
|
||||||
// const module = await import(path.join(__dirname, '../', 'modules', filename));
|
const module = require(path.join(__dirname, '../modules', filename));
|
||||||
// bot.loadModule(module);
|
module({ bot, options, config, discordClient });
|
||||||
} else if (filename.endsWith(".js")) {
|
} if (filename.endsWith(".mjs")) {
|
||||||
const module = require(path.join(__dirname, '../', 'modules', filename));
|
const module = await import(path.join(__dirname, '../modules', filename));
|
||||||
bot.loadModule(module);
|
module.default(bot, options, config, discordClient);
|
||||||
}
|
}
|
||||||
//bot.loadModule(module)
|
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.error('Failed to load module', filename, ':', error)
|
console.error(`Failed to load module ${filename} due to error`);
|
||||||
|
console.error(`\x1b[31m${error.stack}\x1b[0m`);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
module.exports = loadModules;
|
module.exports = loadModules;
|
||||||
/*
|
|
||||||
for (const filename of fs.readdirSync(path.join(__dirname, '../commands'))) {
|
|
||||||
try {
|
|
||||||
if (filename.endsWith('.mjs')) {
|
|
||||||
let commands = await import(path.join(__dirname, '../commands', filename))
|
|
||||||
bot.commandManager.register(commands.command);
|
|
||||||
bot.commandManager.commandlist.push(commands.command);
|
|
||||||
} if (filename.endsWith('.js')) {
|
|
||||||
let commands = require(path.join(__dirname, '../commands', filename));
|
|
||||||
bot.commandManager.register(commands);
|
|
||||||
bot.commandManager.commandlist.push(commands);
|
|
||||||
}
|
|
||||||
} catch (error) {
|
|
||||||
console.error('Failed to load command', filename, ':', error)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
|
|
Loading…
Reference in a new issue