v1.2.8 Heartbeat Monitoring #6
| @ -5,5 +5,4 @@ WORKDIR /usr/src/app | |||||||
| COPY package.json ./ | COPY package.json ./ | ||||||
| RUN npm install | RUN npm install | ||||||
| COPY . . | COPY . . | ||||||
| # CMD ["/bin/sh", "-c", "node main.js 2> /logs/silvanus.err 1> /logs/silvanus.log"] | CMD ["/bin/sh", "-c", "node main.js 2>&1 > /logs/$(date +%Y-%m-%d_%H-%M-%S).txt"] | ||||||
| CMD ["/bin/sh", "-c", "node main.js 2> /logs/error/$(date +%Y-%m-%d_%H-%M-%S).txt 1> /logs/status/$(date +%Y-%m-%d_%H-%M-%S).txt"] |  | ||||||
|  | |||||||
							
								
								
									
										24
									
								
								TODO.md
									
									
									
									
									
								
							
							
						
						
									
										24
									
								
								TODO.md
									
									
									
									
									
								
							| @ -1,10 +1,3 @@ | |||||||
| ## In Progress |  | ||||||
| ☑ Switch `/setup` to ask for the tree and leaderboard channels |  | ||||||
| * Switch `/compare` to check for newer trees and leaderboards when run **and** on every refresh |  | ||||||
| 
 |  | ||||||
| ## Future Ideas |  | ||||||
| * Go through and comment the code |  | ||||||
| 
 |  | ||||||
| ## Variable Structures | ## Variable Structures | ||||||
| 
 | 
 | ||||||
| guildInfo = { | guildInfo = { | ||||||
| @ -21,7 +14,18 @@ guildInfo = { | |||||||
|     reminderOptIn: 0, |     reminderOptIn: 0, | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| ## Expected Behaviors | ## New Table Planning | ||||||
|  | Table: `silvanus`.timers | ||||||
| 
 | 
 | ||||||
| * Run `/compare` before `/setup`: `/compare` will search the current channel for tree and leaderboard messages, then create a comparison embed. If it can't find `/tree` or `/top trees` messages, it'll return an error saying as much. | id | INT | NOT NULL | AUTO INCREMENT | PRIMARY KEY | ||||||
| * Run `/compare` after `/setup`: ``/compare` will search the current channel for tree and leaderboard messages, then create a comparison embed. If it can't find `/tree` or `/top trees` messages, it'll just use old data silently (odds are `/compare` is being run from another channel, that's fine) | status | VARCHAR(10) | NOT NULL | DEFAULT "WAITING" | ||||||
|  | dc_timecode | INT | NOT NULL | Discord timecode | ||||||
|  | guild_id | INT UNSIGNED | NOT NULL | Discord guild ID for referencing `silvanus`.guildInfo | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | Table: `silvanus`.auto_role_status | ||||||
|  | 
 | ||||||
|  | id | INT | NOT NULL | AUTO INCREMENT | PRIMARY KEY | ||||||
|  | user_id | INT UNSIGNED | NOT NULL | ||||||
|  | guild_id | INT UNSIGNED | NOT NULL | ||||||
|  | status | VARCHAR(10) | NOT NULL | DEFAULT "REMOVED" | OPTION: {"REMOVED", "ADDED"} | ||||||
							
								
								
									
										4
									
								
								main.js
									
									
									
									
									
								
							
							
						
						
									
										4
									
								
								main.js
									
									
									
									
									
								
							| @ -28,7 +28,7 @@ const fn = require('./modules/functions.js'); | |||||||
| const strings = require('./data/strings.json'); | const strings = require('./data/strings.json'); | ||||||
| const dbfn = require('./modules/dbfn.js'); | const dbfn = require('./modules/dbfn.js'); | ||||||
| const { GuildInfo } = require('./modules/CustomClasses.js'); | const { GuildInfo } = require('./modules/CustomClasses.js'); | ||||||
| const isDev = process.env.DEBUG; | const isDev = process.env.DEBUG === "true"; | ||||||
| let statusChannel; | let statusChannel; | ||||||
| 
 | 
 | ||||||
| client.once('ready', async () => { | client.once('ready', async () => { | ||||||
| @ -52,6 +52,8 @@ client.once('ready', async () => { | |||||||
| 			fn.sendHeartbeat(heartbeatUrl); | 			fn.sendHeartbeat(heartbeatUrl); | ||||||
| 		}, 30000); | 		}, 30000); | ||||||
| 		if (isDev) console.log("Heartbeat interval set."); | 		if (isDev) console.log("Heartbeat interval set."); | ||||||
|  | 	} else { | ||||||
|  | 		if (isDev) console.log("No heartbeat URL set, will not send heartbeats for uptime monitoring."); | ||||||
| 	} | 	} | ||||||
| }); | }); | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -1145,13 +1145,14 @@ const functions = { | |||||||
| 		return errorId; | 		return errorId; | ||||||
| 	}, | 	}, | ||||||
| 	async sendHeartbeat(url) { | 	async sendHeartbeat(url) { | ||||||
| 		console.log(url); |  | ||||||
| 		https.get(url, async (response) => { | 		https.get(url, async (response) => { | ||||||
|  | 			if (isDev) console.log("Sent Heartbeat Request: " + url); | ||||||
| 			let data = ''; | 			let data = ''; | ||||||
| 
 | 
 | ||||||
| 			response.on('data', (chunk) => data += chunk); | 			response.on('data', (chunk) => data += chunk); | ||||||
| 
 | 
 | ||||||
| 			response.on('end', () => { | 			response.on('end', () => { | ||||||
|  | 				if (isDev) console.log("Received Heartbeat Response: " + data); | ||||||
| 				parsedData = JSON.parse(data); | 				parsedData = JSON.parse(data); | ||||||
| 				if ( !(parsedData.ok) ) console.error("Heartbeat failed"); | 				if ( !(parsedData.ok) ) console.error("Heartbeat failed"); | ||||||
| 			}); | 			}); | ||||||
|  | |||||||
| @ -1,6 +1,6 @@ | |||||||
| { | { | ||||||
|   "name": "silvanus", |   "name": "silvanus", | ||||||
|   "version": "1.2.7", |   "version": "1.2.8", | ||||||
|   "description": "Grow A Tree Companion Bot", |   "description": "Grow A Tree Companion Bot", | ||||||
|   "main": "main.js", |   "main": "main.js", | ||||||
|   "scripts": { |   "scripts": { | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user