Telegram bot #150

Merged
Sirherobrine23 merged 14 commits from Telegram_bot into main 2021-08-11 02:47:35 +00:00
14 changed files with 288 additions and 282 deletions
Showing only changes of commit d56d0aeda2 - Show all commits

View File

@ -1,18 +1,10 @@
const { Telegraf } = require("telegraf"); const { Telegraf, Markup } = require("telegraf");
const fs = require("fs");
const path = require("path");
const bds = require("../index"); const bds = require("../index");
const { GetPlatform, GetPaths } = require("../lib/BdsSettings"); const { GetPlatform } = require("../lib/BdsSettings");
const { GetKernel, arch, system } = require("../lib/BdsSystemInfo"); const { GetKernel, arch, system } = require("../lib/BdsSystemInfo");
const { Detect } = require("../src/CheckKill"); const { Detect } = require("../src/CheckKill");
const TelegramOptions = require("minimist")(process.argv.slice(2));
if (TelegramOptions.h || TelegramOptions.help) {
const Help = [];
console.log(Help.join("\n"));
process.exit(0)
}
// Bot Start And Help messages
const HelpAndStart = [ const HelpAndStart = [
"Hello, welcome to Bds Maneger Telegram Bot", "Hello, welcome to Bds Maneger Telegram Bot",
"", "",
@ -21,6 +13,8 @@ const HelpAndStart = [
" /start or /help: This message!", " /start or /help: This message!",
" /basic", " /basic",
" start, stop", " start, stop",
" /live_log",
" enabler,disabler",
" ", " ",
] ]
@ -75,6 +69,16 @@ bot.command("platform", ctx => {
} }
}); });
bot.command("platform_beta", async ctx => {
const Keyboard = Markup.keyboard([
"/platform bedrock",
"/platform java",
"/platform pocketmine",
"/platform jsprismarine"
]).oneTime().resize();
ctx.reply("Select Platform", Keyboard)
});
// Send Info // Send Info
bot.command("info", ctx => { bot.command("info", ctx => {
const config = bds.get_config(); const config = bds.get_config();
@ -82,34 +86,22 @@ bot.command("info", ctx => {
`Bds Maneger core version: ${bds.package_json.version}`, `Bds Maneger core version: ${bds.package_json.version}`,
"", "",
"* System Info:", "* System Info:",
` Kernel: ${GetKernel()}`, ` Kernel ------ ${GetKernel()}`,
` Arch: ${arch}`, ` Arch -------- ${arch}`,
` System: ${system}`, ` System ----- ${system}`,
"", "",
"* Server:", "* Server:",
` platform: ${GetPlatform()}`, ` platform ---- ${GetPlatform()}`,
` world_name: ${config.world}`, ` world_name -- ${config.world}`,
` running: ${bds.detect()}`, ` running ----- ${bds.detect()}`,
` port: ${config.portv4}`, ` port_V4 ----- ${config.portv4}`,
` port6: ${config.portv6}`, ` port_V6 ----- ${config.portv6}`,
` max_players: ${config.players}`, ` max_players - ${config.players}`,
` whitelist: ${config.whitelist}`, ` whitelist --- ${config.whitelist}`,
] ]
return ctx.reply(InfoRes.join("\n")); return ctx.reply(InfoRes.join("\n"));
}); });
// Log
bot.command("log", ctx => {
try {
// 4096
const Log = fs.readFileSync(path.resolve(GetPaths("log"), "latest.log"), "utf8")
if (Log.length >= 4096) ctx.reply(Log.substr(-4096));
else ctx.reply(Log)
} catch (err) {
ctx.reply(err.toString())
}
});
// Live Log User // Live Log User
global.LiveLog = []; global.LiveLog = [];
bot.command("live_log", ctx => { bot.command("live_log", ctx => {

View File

@ -1,13 +1,11 @@
const { join, resolve } = require("path"); const { join, resolve } = require("path");
const { existsSync, writeFileSync, mkdirSync, readFileSync } = require("fs"); const { existsSync, writeFileSync, mkdirSync, readFileSync } = require("fs");
const { homedir } = require("os"); const { homedir } = require("os");
const { valid_platform } = require("./BdsSystemInfo");
const yaml = { const yaml = {
parse: require("js-yaml").load, parse: require("js-yaml").load,
stringify: require("js-yaml").dump stringify: require("js-yaml").dump
} }
const FetchSync = require("@the-bds-maneger/fetchsync");
const { external_ip } = require("../src/external_ip");
const { valid_platform } = require("./BdsSystemInfo");
// PATHs // PATHs
const home = homedir(); const home = homedir();
@ -21,7 +19,7 @@ else if (valid_platform["java"]) default_platformConfig = "java";
else if (valid_platform["pocketmine"]) default_platformConfig = "pocketmine"; else if (valid_platform["pocketmine"]) default_platformConfig = "pocketmine";
else default_platformConfig = "jsprismarine" else default_platformConfig = "jsprismarine"
// Config Base to Bds Maneger Core and others Projects
var Config = { var Config = {
paths: { paths: {
servers: join(bds_dir, "Servers"), servers: join(bds_dir, "Servers"),
@ -30,11 +28,7 @@ var Config = {
player: join(bds_dir, "Players.json") player: join(bds_dir, "Players.json")
}, },
bds: { bds: {
enable_tmp_host: false, enable_tmp_host: false
temelemetry: {
id: null,
load: false
}
}, },
server: { server: {
platform: default_platformConfig, platform: default_platformConfig,
@ -122,14 +116,6 @@ if (existsSync(ConfigPath)) Config = {
}; else writeFileSync(ConfigPath, yaml.stringify(Config)) }; else writeFileSync(ConfigPath, yaml.stringify(Config))
process.on("exit", ()=>SaveConfig()) process.on("exit", ()=>SaveConfig())
// Telemetry
if (Config.bds.temelemetry.load) {
if (!(Config.bds.temelemetry.id)) {
Config.bds.temelemetry.id = FetchSync(`https://telemetry.the-bds-maneger.org/getid?external_ip=${JSON.stringify(external_ip)}`).text()
SaveConfig()
}
}
// Paths // Paths
if (!(existsSync(Config.paths["backups"]))) mkdirSync(Config.paths["backups"], {recursive: true}) if (!(existsSync(Config.paths["backups"]))) mkdirSync(Config.paths["backups"], {recursive: true})
if (!(existsSync(Config.paths["log"]))) mkdirSync(Config.paths["log"], {recursive: true}) if (!(existsSync(Config.paths["log"]))) mkdirSync(Config.paths["log"], {recursive: true})
@ -149,108 +135,173 @@ for (let Servers of Object.getOwnPropertyNames(ServersPaths)) {
} }
} }
// return settings by function
function GetJsonConfig(){
return Config
}
// get the path from the settings and return by function
function GetPaths(path = null){
if (!(path)) throw new Error("Set path to get");
if (!(path === "all" || Config.paths[path])) throw new Error("Put a valid path: " + Object.getOwnPropertyNames(Config.paths).join(", "));
if (path === "all") return Config.paths
return Config.paths[path]
}
// Get the server paths if you don't send a throw
function GetServerPaths(path = null){
if (!(path)) throw new Error("Set path to get");
if (!(ServersPaths[path])) throw new Error("Put a valid path: " + Object.getOwnPropertyNames(ServersPaths).join(", "));
return ServersPaths[path]
}
// Get the server settings for now it's only being used in Java
function GetServerSettings(platform = Config.server.platform){
return Config.server.Settings[platform]
}
// Update the settings and save at the same time so as not to lose any information from the Bds Maneger settings
function UpdateServerVersion(version = null, platform = Config.server.platform){
if (Config.server.versions[platform] || Config.server.versions[platform] === null) {
Config.server.versions[platform] = version;
SaveConfig()
return Config.server.versions[platform]
} else throw new Error("Platform invalid")
}
// Return an Object with all server versions installed
function GetServerVersion(){
return Config.server.versions
}
// Catch Players/People from Servers/Telegram to be banned or removed from Server/Minecraft
function GetServerBan(){
return Config.ban
}
// Cron for Backup
function GetCronBackup(){
return Config.server.BackupCron
}
// Update the entire Bds Manager Core platform
function UpdatePlatform(platform = Config.server.platform){
platform = platform.toLocaleLowerCase();
if (/bedrock/.test(platform)) {
Config.server.platform = "bedrock";
SaveConfig()
} else if (/java/.test(platform)) {
Config.server.platform = "java";
SaveConfig()
} else if (/pocketmine/.test(platform)) {
Config.server.platform = "pocketmine";
SaveConfig()
} else if (/jsprismarine/.test(platform)) {
Config.server.platform = "jsprismarine";
SaveConfig()
} else throw new Error("platform no Exists")
return platform
}
// Return to platform
function GetPlatform(){
return Config.server.platform
}
// Telegram
function UpdateTelegramToken(token = null){
if (!(token)) throw new Error("Telegram Token invalid")
Config.telegram.token = token
SaveConfig()
return token
}
function GetTelegramToken(){
return Config.telegram.token
}
function GetTelegramAdmins(){
return Config.telegram.admins
}
// Get a temporary host to connect to the server.
function GetTempHost(){
return Config.bds.enable_tmp_host
}
// Enable and/or disable pick up temporary host.
function UpdateTempHost(enable = false){
// Check Boolean
if (typeof enable !== "boolean") {console.log("Use Boolean, default false"); enable = false;}
// Save
Config.bds.enable_tmp_host = enable
return SaveConfig();
}
// Get the server settings
function GetCloudConfig(cloud = null){
if (!(cloud) || !(Config.cloud[cloud])) throw new Error("Cloud no exists");
return Config.cloud[cloud]
}
// Settings Cloud
// Azure
function Azure_Settings(account = null, key = null, container = null){
if (!(account)) throw new Error("Set Azure Blob Account")
if (!(key)) throw new Error("Set Azure Blob Key")
if (!(container)) throw new Error("Set Azure Container")
Config.cloud.Azure.Account = account
Config.cloud.Azure.AccountKey = key
Config.cloud.Azure.Container = container
SaveConfig()
return {
Account: Config.cloud.Azure.Account,
Key: Config.cloud.Azure.AccountKey,
Container: Config.cloud.Azure.Container
}
}
// Oracle
function Oracle_Settings(bucket = null){
if (!(bucket)) throw new Error("Set Oracle Bucket name")
Config.cloud.Oracle.Bucket = bucket
return {
Bucket: bucket
}
}
// Google Drive
function Google_Driver_Settings(rootid = null){
if (!(rootid)) {rootid = null; console.log("No Backup folder id added for Google Driver");}
Config.cloud.Driver.RootID = rootid
SaveConfig()
return {
RootID: rootid
}
}
module.exports = { module.exports = {
bds_dir: bds_dir, bds_dir: bds_dir,
GetJsonConfig: function(){return Config}, GetJsonConfig,
GetPaths: function(path = null){ GetPaths,
if (!(path)) throw new Error("Set path to get"); GetServerPaths,
if (!(path === "all" || Config.paths[path])) throw new Error("Put a valid path: " + Object.getOwnPropertyNames(Config.paths).join(", ")); GetServerSettings,
if (path === "all") return Config.paths UpdateServerVersion,
return Config.paths[path] GetServerVersion,
}, GetServerBan,
GetServerPaths: function(path = null){ GetCronBackup,
if (!(path)) throw new Error("Set path to get"); UpdatePlatform,
if (!(ServersPaths[path])) throw new Error("Put a valid path: " + Object.getOwnPropertyNames(ServersPaths).join(", ")); GetPlatform,
return ServersPaths[path] UpdateTelegramToken,
}, GetTelegramToken,
GetServerSettings: function(platform = Config.server.platform){ GetTelegramAdmins,
return Config.server.Settings[platform] GetTempHost,
}, UpdateTempHost,
UpdateServerVersion: function(version = null, platform = Config.server.platform){ GetCloudConfig,
if (Config.server.versions[platform] || Config.server.versions[platform] === null) { CloudConfig: {
Config.server.versions[platform] = version; Azure: Azure_Settings,
SaveConfig() Oracle: Oracle_Settings,
return Config.server.versions[platform] Driver: Google_Driver_Settings
} else throw new Error("Platform invalid")
},
GetServerVersion: function(){return Config.server.versions},
GetServerBan: function (){return Config.ban},
GetCronBackup: function(){return Config.server.BackupCron},
UpdatePlatform: function(platform = Config.server.platform){
platform = platform.toLocaleLowerCase();
if (platform === "bedrock") {
Config.server.platform = "bedrock";
SaveConfig()
} else if (platform === "java") {
Config.server.platform = "java";
SaveConfig()
} else if (platform === "pocketmine") {
Config.server.platform = "pocketmine";
SaveConfig()
} else if (platform === "jsprismarine") {
Config.server.platform = "jsprismarine";
SaveConfig()
} else throw new Error("platform no Exists")
return platform
},
GetPlatform: function(){return Config.server.platform},
UpdateTelegramToken: function (token = null){
if (!(token)) throw new Error("Telegram Token invalid")
Config.telegram.token = token
SaveConfig()
return token
},
GetTelegramToken: function(){
return Config.telegram.token
},
GetTelegramAdmins: function(){
return Config.telegram.admins
},
GetTempHost: function(){return Config.bds.enable_tmp_host},
UpdateTempHost: function(enable = false){
// Check Boolean
if (typeof enable !== "boolean") {console.log("Use Boolean, default false"); enable = false;}
// Save
Config.bds.enable_tmp_host = enable
return SaveConfig();
},
CloudConfig: {},
GetCloudConfig: function(cloud = null){
if (!(cloud) || !(Config.cloud[cloud])) throw new Error("Cloud no exists");
return Config.cloud[cloud]
}
}
module.exports.CloudConfig = {
Azure: function(account = null, key = null, container = null){
if (!(account)) throw new Error("Set Azure Blob Account")
if (!(key)) throw new Error("Set Azure Blob Key")
if (!(container)) throw new Error("Set Azure Container")
Config.cloud.Azure.Account = account
Config.cloud.Azure.AccountKey = key
Config.cloud.Azure.Container = container
SaveConfig()
return {
Account: Config.cloud.Azure.Account,
Key: Config.cloud.Azure.AccountKey,
Container: Config.cloud.Azure.Container
}
},
Oracle: function(bucket = null){
if (!(bucket)) throw new Error("Set Oracle Bucket name")
Config.cloud.Oracle.Bucket = bucket
return {
Bucket: bucket
}
},
Google: function(){throw new Error("doesn't work yet")},
Driver: function(rootid = null){
if (!(rootid)) {rootid = null; console.log("No Backup folder id added for Google Driver");}
Config.cloud.Driver.RootID = rootid
SaveConfig()
return {
RootID: rootid
}
} }
} }

30
package-lock.json generated
View File

@ -1,12 +1,12 @@
{ {
"name": "@the-bds-maneger/core", "name": "@the-bds-maneger/core",
"version": "1.13.2", "version": "1.13.4",
"lockfileVersion": 2, "lockfileVersion": 2,
"requires": true, "requires": true,
"packages": { "packages": {
"": { "": {
"name": "@the-bds-maneger/core", "name": "@the-bds-maneger/core",
"version": "1.13.2", "version": "1.13.4",
"license": "AGPL-3.0-or-later", "license": "AGPL-3.0-or-later",
"dependencies": { "dependencies": {
"@azure/storage-blob": "^12.6.0", "@azure/storage-blob": "^12.6.0",
@ -32,9 +32,11 @@
"uuid": "^8.3.2" "uuid": "^8.3.2"
}, },
"bin": { "bin": {
"bds_maneger": "bin/bds_maneger.js" "bds_maneger": "bin/bds_maneger.js",
"bds_telegram": "bin/telegram_bot.js"
}, },
"devDependencies": { "devDependencies": {
"docker-run_build": "github:Sirherobrine23/Docker-Run_Build",
"eslint": "^7.19.0", "eslint": "^7.19.0",
"husky": "^7.0.0", "husky": "^7.0.0",
"nexe": "*", "nexe": "*",
@ -1792,6 +1794,19 @@
"node": ">=8" "node": ">=8"
} }
}, },
"node_modules/docker-run_build": {
"version": "1.0.0",
"resolved": "git+ssh://git@github.com/Sirherobrine23/Docker-Run_Build.git#dca7037ac2175352485e61e7e565ec1d81caa062",
"dev": true,
"license": "GPL-3.0-or-later",
"dependencies": {
"js-yaml": "^4.1.0",
"minimist": "^1.2.5"
},
"bin": {
"docker-run_build": "bin/cli.js"
}
},
"node_modules/doctrine": { "node_modules/doctrine": {
"version": "3.0.0", "version": "3.0.0",
"resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz",
@ -8380,6 +8395,15 @@
"path-type": "^4.0.0" "path-type": "^4.0.0"
} }
}, },
"docker-run_build": {
"version": "git+ssh://git@github.com/Sirherobrine23/Docker-Run_Build.git#dca7037ac2175352485e61e7e565ec1d81caa062",
"dev": true,
"from": "docker-run_build@https://github.com/Sirherobrine23/Docker-Run_Build.git",
"requires": {
"js-yaml": "^4.1.0",
"minimist": "^1.2.5"
}
},
"doctrine": { "doctrine": {
"version": "3.0.0", "version": "3.0.0",
"resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz",

View File

@ -3,7 +3,7 @@
"publishConfig": { "publishConfig": {
"access": "public" "access": "public"
}, },
"version": "1.13.2", "version": "1.13.4",
"description": "Scripts to manage minecraft server's", "description": "Scripts to manage minecraft server's",
"private": false, "private": false,
"main": "index.js", "main": "index.js",
@ -13,14 +13,14 @@
"test": "node .Build/test/ci.js", "test": "node .Build/test/ci.js",
"ci": "node .Build/test/ci.js", "ci": "node .Build/test/ci.js",
"eslint": "eslint --debug .", "eslint": "eslint --debug .",
"eslint:debug": "eslint --debug .",
"eslint:fix": "eslint --debug --fix .", "eslint:fix": "eslint --debug --fix .",
"nexe": "node .Build/nexe_build.js", "nexe": "node .Build/nexe_build.js",
"Docker": "node .Build/DockerImage.js", "Docker": "node .Build/DockerImage.js",
"dev:telegram": "node bin/telegram_bot.js -e js" "dev:telegram": "node bin/telegram_bot.js -e js"
}, },
"bin": { "bin": {
"bds_maneger": "./bin/bds_maneger.js" "bds_maneger": "./bin/bds_maneger.js",
"bds_telegram": "./bin/telegram_bot.js"
}, },
"repository": { "repository": {
"type": "git", "type": "git",
@ -39,18 +39,16 @@
"author": "Sirherobrine23", "author": "Sirherobrine23",
"license": "AGPL-3.0-or-later", "license": "AGPL-3.0-or-later",
"bugs": { "bugs": {
"url": "https://github.com/The-Bds-Maneger/Bds-Maneger-Core/issues", "url": "https://github.com/The-Bds-Maneger/Bds-Maneger-Core/issues/new"
"email": "support@the-bds-maneger.org"
}, },
"homepage": "https://github.com/The-Bds-Maneger/Bds-Maneger-Core/", "homepage": "https://docs.bdsmaneger.com/Bds Maneger core",
"docs_base": "https://docs.the-bds-maneger.org/Bds Maneger core/",
"engines": { "engines": {
"node": ">=14", "node": ">=14",
"npm": ">=7" "npm": ">=7"
}, },
"husky": { "husky": {
"hooks": { "hooks": {
"post-merge": "npm update && npm install" "post-merge": "npm install --node-save -d"
} }
}, },
"dependencies": { "dependencies": {
@ -77,6 +75,7 @@
"uuid": "^8.3.2" "uuid": "^8.3.2"
}, },
"devDependencies": { "devDependencies": {
"docker-run_build": "github:Sirherobrine23/Docker-Run_Build",
"eslint": "^7.19.0", "eslint": "^7.19.0",
"husky": "^7.0.0", "husky": "^7.0.0",
"nexe": "*", "nexe": "*",