It can automatically make the messages now :)
This commit is contained in:
		
							parent
							
								
									a5dd7ff20d
								
							
						
					
					
						commit
						7f95b96e6c
					
				|  | @ -3,12 +3,13 @@ | |||
| 		"token": "" | ||||
| 	}, | ||||
| 	"stormworks": { | ||||
| 		"updateInterval": 10, | ||||
| 		"lowTPS": 45, | ||||
| 		"servers": [ | ||||
| 			{ | ||||
| 				"ip": "127.0.0.1", | ||||
| 				"port": 25565, | ||||
| 				"messageId": "1234567890123456789", | ||||
| 				"messageId": "this is optional, if you want to use an already existing message, if not, delete this line", | ||||
| 				"channelId": "9876543210987654321" | ||||
| 			} | ||||
| 		] | ||||
|  |  | |||
							
								
								
									
										215
									
								
								index.js
									
									
									
									
									
								
							
							
						
						
									
										215
									
								
								index.js
									
									
									
									
									
								
							|  | @ -1,6 +1,7 @@ | |||
| const config = require('./config.json'); | ||||
| const colors = require('colors'); | ||||
| const Discord = require('discord.js'); | ||||
| const fs = require('fs'); | ||||
| const rest = new Discord.REST({ | ||||
| 	version: '10' | ||||
| }).setToken(config.discord.token); | ||||
|  | @ -15,7 +16,7 @@ function splitKeyword(keyword) { | |||
| 	switch (data[1]) { | ||||
| 		case "0": | ||||
| 			dlcString = "None" | ||||
| 			dlcEmoji  = ":x:" | ||||
| 			dlcEmoji = ":x:" | ||||
| 			break; | ||||
| 		case "1": | ||||
| 			dlcString = "Weapons" | ||||
|  | @ -137,36 +138,43 @@ function checkServer(address) { | |||
| 	}); | ||||
| } | ||||
| 
 | ||||
| function startTimeout(addr, port, msg) { | ||||
| 	setTimeout(() => { | ||||
| 		console.log(`${colors.magenta(`[DEBUG ${new Date()}]`)} Updating ${addr}:${port}`); | ||||
| 		updateStatus(addr, port, msg); | ||||
| 	}, config.stormworks.updateInterval * 1000); | ||||
| } | ||||
| 
 | ||||
| function updateStatus(addr, port, msg) { | ||||
| 
 | ||||
| 	if (!serverEmbeds[`${addr}:${port}`]) { | ||||
| 		serverEmbeds[`${addr}:${port}`] = { | ||||
| 			"title": "Unknown", | ||||
| 			"fields": [{ | ||||
| 					"name": "Status", | ||||
| 					"value": `<:lowtps:1108862303618728108>: \`Unknown\``, | ||||
| 					"inline": true | ||||
| 				}, | ||||
| 				{ | ||||
| 					"name": "Version", | ||||
| 					"value": `?`, | ||||
| 					"inline": true | ||||
| 				}, | ||||
| 				{ | ||||
| 					"name": "DLC", | ||||
| 					"value": `?`, | ||||
| 					"inline": true | ||||
| 				}, | ||||
| 				{ | ||||
| 					"name": "TPS", | ||||
| 					"value": `?`, | ||||
| 					"inline": true | ||||
| 				}, | ||||
| 				{ | ||||
| 					"name": "Players", | ||||
| 					"value": `?/?`, | ||||
| 					"inline": true | ||||
| 				} | ||||
| 				"name": "Status", | ||||
| 				"value": `<:lowtps:1108862303618728108>: \`Unknown\``, | ||||
| 				"inline": true | ||||
| 			}, | ||||
| 			{ | ||||
| 				"name": "Version", | ||||
| 				"value": `?`, | ||||
| 				"inline": true | ||||
| 			}, | ||||
| 			{ | ||||
| 				"name": "DLC", | ||||
| 				"value": `?`, | ||||
| 				"inline": true | ||||
| 			}, | ||||
| 			{ | ||||
| 				"name": "TPS", | ||||
| 				"value": `?`, | ||||
| 				"inline": true | ||||
| 			}, | ||||
| 			{ | ||||
| 				"name": "Players", | ||||
| 				"value": `?/?`, | ||||
| 				"inline": true | ||||
| 			} | ||||
| 			], | ||||
| 			"color": 0x00ffff, | ||||
| 			"footer": { | ||||
|  | @ -175,7 +183,7 @@ function updateStatus(addr, port, msg) { | |||
| 			"timestamp": new Date() | ||||
| 		}; | ||||
| 	} | ||||
| 	if(!serverStatus[`${addr}:${port}`]) { | ||||
| 	if (!serverStatus[`${addr}:${port}`]) { | ||||
| 		serverStatus[`${addr}:${port}`] = { | ||||
| 			"status": false, | ||||
| 			"error": "Could not connect to server", | ||||
|  | @ -198,10 +206,7 @@ function updateStatus(addr, port, msg) { | |||
| 			// If none of the info has changed, don't edit the embed
 | ||||
| 			if (data.name == serverStatus[`${addr}:${port}`].name && data.version == serverStatus[`${addr}:${port}`].version && data.dlc == serverStatus[`${addr}:${port}`].dlc && data.tps == serverStatus[`${addr}:${port}`].tps && data.players == serverStatus[`${addr}:${port}`].players && data.maxPlayers == serverStatus[`${addr}:${port}`].maxPlayers) { | ||||
| 				console.log(`${colors.magenta(`[DEBUG ${new Date()}]`)} ${addr}:${port} is online, but nothing has changed.`); | ||||
| 				setTimeout(() => { | ||||
| 					console.log(`${colors.magenta(`[DEBUG ${new Date()}]`)} Updating ${addr}:${port}`); | ||||
| 					updateStatus(addr, port, msg); | ||||
| 				}, 5000) | ||||
| 				startTimeout(addr, port, msg); | ||||
| 				return; | ||||
| 			} | ||||
| 			console.log(`${colors.magenta(`[DEBUG ${new Date()}]`)} ${addr}:${port} is online.`); | ||||
|  | @ -209,30 +214,30 @@ function updateStatus(addr, port, msg) { | |||
| 			embed = { | ||||
| 				"title": data.name, | ||||
| 				"fields": [{ | ||||
| 						"name": "Status", | ||||
| 						"value": `${data.tps <= config.stormworks.lowTPS ? "<:lowtps:1108862303618728108>: `TPS Low`" : "<:online:1108862127021756457> `Online`"}`, | ||||
| 						"inline": true | ||||
| 					}, | ||||
| 					{ | ||||
| 						"name": "Version", | ||||
| 						"value": `${data.version}`, | ||||
| 						"inline": true | ||||
| 					}, | ||||
| 					{ | ||||
| 						"name": "DLC", | ||||
| 						"value": `${data.dlcEmotes} ${data.dlcString}`, | ||||
| 						"inline": true | ||||
| 					}, | ||||
| 					{ | ||||
| 						"name": "TPS", | ||||
| 						"value": `${data.tps}`, | ||||
| 						"inline": true | ||||
| 					}, | ||||
| 					{ | ||||
| 						"name": "Players", | ||||
| 						"value": `${data.players}/${data.maxPlayers}`, | ||||
| 						"inline": true | ||||
| 					} | ||||
| 					"name": "Status", | ||||
| 					"value": `${data.tps <= config.stormworks.lowTPS ? "<:lowtps:1108862303618728108>: `TPS Low`" : "<:online:1108862127021756457> `Online`"}`, | ||||
| 					"inline": true | ||||
| 				}, | ||||
| 				{ | ||||
| 					"name": "Version", | ||||
| 					"value": `${data.version}`, | ||||
| 					"inline": true | ||||
| 				}, | ||||
| 				{ | ||||
| 					"name": "DLC", | ||||
| 					"value": `${data.dlcEmotes} ${data.dlcString}`, | ||||
| 					"inline": true | ||||
| 				}, | ||||
| 				{ | ||||
| 					"name": "TPS", | ||||
| 					"value": `${data.tps}`, | ||||
| 					"inline": true | ||||
| 				}, | ||||
| 				{ | ||||
| 					"name": "Players", | ||||
| 					"value": `${data.players}/${data.maxPlayers}`, | ||||
| 					"inline": true | ||||
| 				} | ||||
| 				], | ||||
| 				"color": data.tps <= config.stormworks.lowTPS ? 0xfff000 : 0x00ff00, | ||||
| 				"footer": { | ||||
|  | @ -245,25 +250,16 @@ function updateStatus(addr, port, msg) { | |||
| 				embeds: [embed] | ||||
| 			}).then(() => { | ||||
| 				console.log(`${colors.magenta(`[DEBUG ${new Date()}]`)} ${addr}:${port} is online, edited embed.`); | ||||
| 				setTimeout(() => { | ||||
| 					console.log(`${colors.magenta(`[DEBUG ${new Date()}]`)} Updating ${addr}:${port}`); | ||||
| 					updateStatus(addr, port, msg); | ||||
| 				}, 5000) | ||||
| 				startTimeout(addr, port, msg); | ||||
| 			}).catch((err) => { | ||||
| 				console.log(`${colors.red("[ERROR]")} ${err}`); | ||||
| 				setTimeout(() => { | ||||
| 					console.log(`${colors.magenta(`[DEBUG ${new Date()}]`)} Updating ${addr}:${port}`); | ||||
| 					updateStatus(addr, port, msg); | ||||
| 				}, 5000) | ||||
| 				startTimeout(addr, port, msg); | ||||
| 			}); | ||||
| 		} else { | ||||
| 			// If the server was already offline, don't edit the embed
 | ||||
| 			if (!serverStatus[`${addr}:${port}`].status) { | ||||
| 				console.log(`${colors.magenta(`[DEBUG ${new Date()}]`)} ${addr}:${port} is offline, but was already offline.`); | ||||
| 				setTimeout(() => { | ||||
| 					console.log(`${colors.magenta(`[DEBUG ${new Date()}]`)} Updating ${addr}:${port}`); | ||||
| 					updateStatus(addr, port, msg); | ||||
| 				}, 5000) | ||||
| 				startTimeout(addr, port, msg); | ||||
| 				return; | ||||
| 			} | ||||
| 			serverStatus[`${addr}:${port}`].status = false; | ||||
|  | @ -273,30 +269,30 @@ function updateStatus(addr, port, msg) { | |||
| 			embed = { | ||||
| 				"title": data2.name, | ||||
| 				"fields": [{ | ||||
| 						"name": "Status", | ||||
| 						"value": `<:offline:1108862189793726485> \`Offline\``, | ||||
| 						"inline": true | ||||
| 					}, | ||||
| 					{ | ||||
| 						"name": "Version", | ||||
| 						"value": `${data2.version}`, | ||||
| 						"inline": true | ||||
| 					}, | ||||
| 					{ | ||||
| 						"name": "DLC", | ||||
| 						"value": `${data2.dlcEmotes} ${data2.dlcString}`, | ||||
| 						"inline": true | ||||
| 					}, | ||||
| 					{ | ||||
| 						"name": "TPS", | ||||
| 						"value": `0`, | ||||
| 						"inline": true | ||||
| 					}, | ||||
| 					{ | ||||
| 						"name": "Players", | ||||
| 						"value": `0/${data2.maxPlayers}`, | ||||
| 						"inline": true | ||||
| 					} | ||||
| 					"name": "Status", | ||||
| 					"value": `<:offline:1108862189793726485> \`Offline\``, | ||||
| 					"inline": true | ||||
| 				}, | ||||
| 				{ | ||||
| 					"name": "Version", | ||||
| 					"value": `${data2.version}`, | ||||
| 					"inline": true | ||||
| 				}, | ||||
| 				{ | ||||
| 					"name": "DLC", | ||||
| 					"value": `${data2.dlcEmotes} ${data2.dlcString}`, | ||||
| 					"inline": true | ||||
| 				}, | ||||
| 				{ | ||||
| 					"name": "TPS", | ||||
| 					"value": `0`, | ||||
| 					"inline": true | ||||
| 				}, | ||||
| 				{ | ||||
| 					"name": "Players", | ||||
| 					"value": `0/${data2.maxPlayers}`, | ||||
| 					"inline": true | ||||
| 				} | ||||
| 				], | ||||
| 				"color": 0xff0000, | ||||
| 				"footer": { | ||||
|  | @ -309,16 +305,10 @@ function updateStatus(addr, port, msg) { | |||
| 				"embeds": [serverEmbeds[`${addr}:${port}`]] | ||||
| 			}).then((msg) => { | ||||
| 				console.log(`${colors.magenta(`[DEBUG ${new Date()}]`)} ${addr}:${port} is offline, edited embed.`); | ||||
| 				setTimeout(() => { | ||||
| 					console.log(`${colors.magenta(`[DEBUG ${new Date()}]`)} Updating ${addr}:${port}`); | ||||
| 					updateStatus(addr, port, msg); | ||||
| 				}, 5000) | ||||
| 				startTimeout(addr, port, msg); | ||||
| 			}).catch((err) => { | ||||
| 				console.log(`${colors.red("[ERROR]")} ${err}`); | ||||
| 				setTimeout(() => { | ||||
| 					console.log(`${colors.magenta(`[DEBUG ${new Date()}]`)} Updating ${addr}:${port}`); | ||||
| 					updateStatus(addr, port, msg); | ||||
| 				}, 5000) | ||||
| 				startTimeout(addr, port, msg); | ||||
| 			}); | ||||
| 		} | ||||
| 	}) | ||||
|  | @ -342,8 +332,8 @@ client.on("ready", async () => { | |||
| 				// Register commands
 | ||||
| 				await rest.put( | ||||
| 					Discord.Routes.applicationGuildCommands(client.user.id, guild.id), { | ||||
| 						body: commands | ||||
| 					}, | ||||
| 					body: commands | ||||
| 				}, | ||||
| 				); | ||||
| 				console.log(`${colors.cyan("[INFO]")} Successfully registered commands for ${colors.green(guild.name)}. Took ${colors.green((Date.now() - gStart) / 1000)} seconds.`); | ||||
| 			}; | ||||
|  | @ -357,11 +347,28 @@ client.on("ready", async () => { | |||
| 	console.log(`${colors.cyan("[INFO]")} Startup took ${colors.green((Date.now() - initTime) / 1000)} seconds.`) | ||||
| 
 | ||||
| 	config.stormworks.servers.forEach((server) => { | ||||
| 		client.channels.fetch(server.channelId).then((channel) => { | ||||
| 			channel.messages.fetch(server.messageId).then((message) => { | ||||
| 				updateStatus(server.ip, server.port, message) | ||||
| 		if (!server.channelId) throw new Error("Channel ID not set in config!!!"); | ||||
| 		if (!server.messageId) { | ||||
| 			// Lets send an empty embed in the channel and update the config file with the message ID. Then write the message ID to the config file
 | ||||
| 			client.channels.fetch(server.channelId).then((channel) => { | ||||
| 				channel.send({ | ||||
| 					embeds: [{ | ||||
| 						description: "Please Wait" | ||||
| 					}] | ||||
| 				}).then(async (msg) => { | ||||
| 					server.messageId = msg.id; | ||||
| 					fs.writeFileSync("./config.json", JSON.stringify(config, null, "\t")); | ||||
| 					updateStatus(server.ip, server.port, msg) | ||||
| 				}); | ||||
| 			}); | ||||
| 		}); | ||||
| 
 | ||||
| 		} else { | ||||
| 			client.channels.fetch(server.channelId).then((channel) => { | ||||
| 				channel.messages.fetch(server.messageId).then((message) => { | ||||
| 					updateStatus(server.ip, server.port, message) | ||||
| 				}); | ||||
| 			}); | ||||
| 		} | ||||
| 	}); | ||||
| 	// client.channels.fetch("1108126926045986856").then((channel) => {
 | ||||
| 	// 	channel.messages.fetch("1108860190935232592").then((message) => {
 | ||||
|  |  | |||
		Loading…
	
		Reference in a new issue