Telegram bot #150
@ -1,18 +1,10 @@
|
||||
const { Telegraf } = require("telegraf");
|
||||
const fs = require("fs");
|
||||
const path = require("path");
|
||||
const { Telegraf, Markup } = require("telegraf");
|
||||
const bds = require("../index");
|
||||
const { GetPlatform, GetPaths } = require("../lib/BdsSettings");
|
||||
const { GetPlatform } = require("../lib/BdsSettings");
|
||||
const { GetKernel, arch, system } = require("../lib/BdsSystemInfo");
|
||||
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 = [
|
||||
"Hello, welcome to Bds Maneger Telegram Bot",
|
||||
"",
|
||||
@ -21,6 +13,8 @@ const HelpAndStart = [
|
||||
" /start or /help: This message!",
|
||||
" /basic",
|
||||
" 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
|
||||
bot.command("info", ctx => {
|
||||
const config = bds.get_config();
|
||||
@ -82,34 +86,22 @@ bot.command("info", ctx => {
|
||||
`Bds Maneger core version: ${bds.package_json.version}`,
|
||||
"",
|
||||
"* System Info:",
|
||||
` Kernel: ${GetKernel()}`,
|
||||
` Arch: ${arch}`,
|
||||
` System: ${system}`,
|
||||
` Kernel ------ ${GetKernel()}`,
|
||||
` Arch -------- ${arch}`,
|
||||
` System ----- ${system}`,
|
||||
"",
|
||||
"* Server:",
|
||||
` platform: ${GetPlatform()}`,
|
||||
` world_name: ${config.world}`,
|
||||
` running: ${bds.detect()}`,
|
||||
` port: ${config.portv4}`,
|
||||
` port6: ${config.portv6}`,
|
||||
` max_players: ${config.players}`,
|
||||
` whitelist: ${config.whitelist}`,
|
||||
` platform ---- ${GetPlatform()}`,
|
||||
` world_name -- ${config.world}`,
|
||||
` running ----- ${bds.detect()}`,
|
||||
` port_V4 ----- ${config.portv4}`,
|
||||
` port_V6 ----- ${config.portv6}`,
|
||||
` max_players - ${config.players}`,
|
||||
` whitelist --- ${config.whitelist}`,
|
||||
]
|
||||
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
|
||||
global.LiveLog = [];
|
||||
bot.command("live_log", ctx => {
|
||||
|
@ -1,13 +1,11 @@
|
||||
const { join, resolve } = require("path");
|
||||
const { existsSync, writeFileSync, mkdirSync, readFileSync } = require("fs");
|
||||
const { homedir } = require("os");
|
||||
const { valid_platform } = require("./BdsSystemInfo");
|
||||
const yaml = {
|
||||
parse: require("js-yaml").load,
|
||||
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
|
||||
const home = homedir();
|
||||
@ -21,7 +19,7 @@ else if (valid_platform["java"]) default_platformConfig = "java";
|
||||
else if (valid_platform["pocketmine"]) default_platformConfig = "pocketmine";
|
||||
else default_platformConfig = "jsprismarine"
|
||||
|
||||
|
||||
// Config Base to Bds Maneger Core and others Projects
|
||||
var Config = {
|
||||
paths: {
|
||||
servers: join(bds_dir, "Servers"),
|
||||
@ -30,11 +28,7 @@ var Config = {
|
||||
player: join(bds_dir, "Players.json")
|
||||
},
|
||||
bds: {
|
||||
enable_tmp_host: false,
|
||||
temelemetry: {
|
||||
id: null,
|
||||
load: false
|
||||
}
|
||||
enable_tmp_host: false
|
||||
},
|
||||
server: {
|
||||
platform: default_platformConfig,
|
||||
@ -122,14 +116,6 @@ if (existsSync(ConfigPath)) Config = {
|
||||
}; else writeFileSync(ConfigPath, yaml.stringify(Config))
|
||||
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
|
||||
if (!(existsSync(Config.paths["backups"]))) mkdirSync(Config.paths["backups"], {recursive: true})
|
||||
if (!(existsSync(Config.paths["log"]))) mkdirSync(Config.paths["log"], {recursive: true})
|
||||
@ -149,81 +135,119 @@ for (let Servers of Object.getOwnPropertyNames(ServersPaths)) {
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = {
|
||||
bds_dir: bds_dir,
|
||||
GetJsonConfig: function(){return Config},
|
||||
GetPaths: function(path = null){
|
||||
// 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]
|
||||
},
|
||||
GetServerPaths: function(path = null){
|
||||
}
|
||||
|
||||
// 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]
|
||||
},
|
||||
GetServerSettings: function(platform = Config.server.platform){
|
||||
}
|
||||
|
||||
// Get the server settings for now it's only being used in Java
|
||||
function GetServerSettings(platform = Config.server.platform){
|
||||
return Config.server.Settings[platform]
|
||||
},
|
||||
UpdateServerVersion: function(version = null, platform = Config.server.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")
|
||||
},
|
||||
GetServerVersion: function(){return Config.server.versions},
|
||||
GetServerBan: function (){return Config.ban},
|
||||
GetCronBackup: function(){return Config.server.BackupCron},
|
||||
UpdatePlatform: function(platform = Config.server.platform){
|
||||
}
|
||||
|
||||
// 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 (platform === "bedrock") {
|
||||
if (/bedrock/.test(platform)) {
|
||||
Config.server.platform = "bedrock";
|
||||
SaveConfig()
|
||||
} else if (platform === "java") {
|
||||
} else if (/java/.test(platform)) {
|
||||
Config.server.platform = "java";
|
||||
SaveConfig()
|
||||
} else if (platform === "pocketmine") {
|
||||
} else if (/pocketmine/.test(platform)) {
|
||||
Config.server.platform = "pocketmine";
|
||||
SaveConfig()
|
||||
} else if (platform === "jsprismarine") {
|
||||
} else if (/jsprismarine/.test(platform)) {
|
||||
Config.server.platform = "jsprismarine";
|
||||
SaveConfig()
|
||||
} else throw new Error("platform no Exists")
|
||||
return platform
|
||||
},
|
||||
GetPlatform: function(){return Config.server.platform},
|
||||
UpdateTelegramToken: function (token = null){
|
||||
}
|
||||
|
||||
// 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
|
||||
},
|
||||
GetTelegramToken: function(){
|
||||
}
|
||||
|
||||
function GetTelegramToken(){
|
||||
return Config.telegram.token
|
||||
},
|
||||
GetTelegramAdmins: function(){
|
||||
}
|
||||
|
||||
function GetTelegramAdmins(){
|
||||
return Config.telegram.admins
|
||||
},
|
||||
GetTempHost: function(){return Config.bds.enable_tmp_host},
|
||||
UpdateTempHost: function(enable = false){
|
||||
}
|
||||
|
||||
// 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();
|
||||
},
|
||||
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){
|
||||
// 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")
|
||||
@ -236,21 +260,48 @@ module.exports.CloudConfig = {
|
||||
Key: Config.cloud.Azure.AccountKey,
|
||||
Container: Config.cloud.Azure.Container
|
||||
}
|
||||
},
|
||||
Oracle: function(bucket = null){
|
||||
}
|
||||
|
||||
// Oracle
|
||||
function Oracle_Settings(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){
|
||||
}
|
||||
|
||||
// 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 = {
|
||||
bds_dir: bds_dir,
|
||||
GetJsonConfig,
|
||||
GetPaths,
|
||||
GetServerPaths,
|
||||
GetServerSettings,
|
||||
UpdateServerVersion,
|
||||
GetServerVersion,
|
||||
GetServerBan,
|
||||
GetCronBackup,
|
||||
UpdatePlatform,
|
||||
GetPlatform,
|
||||
UpdateTelegramToken,
|
||||
GetTelegramToken,
|
||||
GetTelegramAdmins,
|
||||
GetTempHost,
|
||||
UpdateTempHost,
|
||||
GetCloudConfig,
|
||||
CloudConfig: {
|
||||
Azure: Azure_Settings,
|
||||
Oracle: Oracle_Settings,
|
||||
Driver: Google_Driver_Settings
|
||||
}
|
||||
}
|
30
package-lock.json
generated
30
package-lock.json
generated
@ -1,12 +1,12 @@
|
||||
{
|
||||
"name": "@the-bds-maneger/core",
|
||||
"version": "1.13.2",
|
||||
"version": "1.13.4",
|
||||
"lockfileVersion": 2,
|
||||
"requires": true,
|
||||
"packages": {
|
||||
"": {
|
||||
"name": "@the-bds-maneger/core",
|
||||
"version": "1.13.2",
|
||||
"version": "1.13.4",
|
||||
"license": "AGPL-3.0-or-later",
|
||||
"dependencies": {
|
||||
"@azure/storage-blob": "^12.6.0",
|
||||
@ -32,9 +32,11 @@
|
||||
"uuid": "^8.3.2"
|
||||
},
|
||||
"bin": {
|
||||
"bds_maneger": "bin/bds_maneger.js"
|
||||
"bds_maneger": "bin/bds_maneger.js",
|
||||
"bds_telegram": "bin/telegram_bot.js"
|
||||
},
|
||||
"devDependencies": {
|
||||
"docker-run_build": "github:Sirherobrine23/Docker-Run_Build",
|
||||
"eslint": "^7.19.0",
|
||||
"husky": "^7.0.0",
|
||||
"nexe": "*",
|
||||
@ -1792,6 +1794,19 @@
|
||||
"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": {
|
||||
"version": "3.0.0",
|
||||
"resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz",
|
||||
@ -8380,6 +8395,15 @@
|
||||
"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": {
|
||||
"version": "3.0.0",
|
||||
"resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz",
|
||||
|
15
package.json
15
package.json
@ -3,7 +3,7 @@
|
||||
"publishConfig": {
|
||||
"access": "public"
|
||||
},
|
||||
"version": "1.13.2",
|
||||
"version": "1.13.4",
|
||||
"description": "Scripts to manage minecraft server's",
|
||||
"private": false,
|
||||
"main": "index.js",
|
||||
@ -13,14 +13,14 @@
|
||||
"test": "node .Build/test/ci.js",
|
||||
"ci": "node .Build/test/ci.js",
|
||||
"eslint": "eslint --debug .",
|
||||
"eslint:debug": "eslint --debug .",
|
||||
"eslint:fix": "eslint --debug --fix .",
|
||||
"nexe": "node .Build/nexe_build.js",
|
||||
"Docker": "node .Build/DockerImage.js",
|
||||
"dev:telegram": "node bin/telegram_bot.js -e js"
|
||||
},
|
||||
"bin": {
|
||||
"bds_maneger": "./bin/bds_maneger.js"
|
||||
"bds_maneger": "./bin/bds_maneger.js",
|
||||
"bds_telegram": "./bin/telegram_bot.js"
|
||||
},
|
||||
"repository": {
|
||||
"type": "git",
|
||||
@ -39,18 +39,16 @@
|
||||
"author": "Sirherobrine23",
|
||||
"license": "AGPL-3.0-or-later",
|
||||
"bugs": {
|
||||
"url": "https://github.com/The-Bds-Maneger/Bds-Maneger-Core/issues",
|
||||
"email": "support@the-bds-maneger.org"
|
||||
"url": "https://github.com/The-Bds-Maneger/Bds-Maneger-Core/issues/new"
|
||||
},
|
||||
"homepage": "https://github.com/The-Bds-Maneger/Bds-Maneger-Core/",
|
||||
"docs_base": "https://docs.the-bds-maneger.org/Bds Maneger core/",
|
||||
"homepage": "https://docs.bdsmaneger.com/Bds Maneger core",
|
||||
"engines": {
|
||||
"node": ">=14",
|
||||
"npm": ">=7"
|
||||
},
|
||||
"husky": {
|
||||
"hooks": {
|
||||
"post-merge": "npm update && npm install"
|
||||
"post-merge": "npm install --node-save -d"
|
||||
}
|
||||
},
|
||||
"dependencies": {
|
||||
@ -77,6 +75,7 @@
|
||||
"uuid": "^8.3.2"
|
||||
},
|
||||
"devDependencies": {
|
||||
"docker-run_build": "github:Sirherobrine23/Docker-Run_Build",
|
||||
"eslint": "^7.19.0",
|
||||
"husky": "^7.0.0",
|
||||
"nexe": "*",
|
||||
|
Reference in New Issue
Block a user