Compare commits
12 Commits
Author | SHA1 | Date |
---|---|---|
Skylar Grant | ac6eca4827 | |
Skylar Grant | 88cc4eda3c | |
Skylar Grant | 7291216dcb | |
Skylar Grant | 36f44f4b41 | |
Skylar Grant | 825ec725d1 | |
Skylar Grant | fb43d09d13 | |
Skylar Grant | 0463695323 | |
Skylar Grant | 314b793042 | |
Skylar Grant | eca3207d4e | |
Skylar Grant | e2658c41e5 | |
Skylar Grant | dd313faa60 | |
Skylar Grant | 4dda58f48e |
|
@ -5,5 +5,4 @@ WORKDIR /usr/src/app
|
|||
COPY package.json ./
|
||||
RUN npm install
|
||||
COPY . .
|
||||
# CMD ["/bin/sh", "-c", "node main.js 2> /logs/silvanus.err 1> /logs/silvanus.log"]
|
||||
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"]
|
||||
CMD ["/bin/sh", "-c", "node main.js 2>&1 > /logs/$(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
|
||||
|
||||
guildInfo = {
|
||||
|
@ -21,7 +14,18 @@ guildInfo = {
|
|||
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.
|
||||
* 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)
|
||||
id | INT | NOT NULL | AUTO INCREMENT | PRIMARY KEY
|
||||
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"}
|
14
main.js
14
main.js
|
@ -5,6 +5,8 @@ const dotenv = require('dotenv');
|
|||
dotenv.config();
|
||||
const token = process.env.TOKEN;
|
||||
const statusChannelId = process.env.STATUSCHANNELID;
|
||||
const heartbeatUrl = process.env.HEARTBEAT_URL;
|
||||
const sendHeartbeat = typeof heartbeatUrl === 'string';
|
||||
|
||||
// Discord.JS
|
||||
const { Client, GatewayIntentBits, Partials, ActivityType } = require('discord.js');
|
||||
|
@ -26,7 +28,7 @@ const fn = require('./modules/functions.js');
|
|||
const strings = require('./data/strings.json');
|
||||
const dbfn = require('./modules/dbfn.js');
|
||||
const { GuildInfo } = require('./modules/CustomClasses.js');
|
||||
const isDev = process.env.DEBUG;
|
||||
const isDev = process.env.DEBUG === "true";
|
||||
let statusChannel;
|
||||
|
||||
client.once('ready', async () => {
|
||||
|
@ -43,6 +45,16 @@ client.once('ready', async () => {
|
|||
if (isDev == 'false') {
|
||||
statusChannel.send(`${new Date().toISOString()} -- \nStartup Sequence Complete <@481933290912350209>`);
|
||||
}
|
||||
|
||||
// Heartbeat Timer
|
||||
if (sendHeartbeat) {
|
||||
setInterval(() => {
|
||||
fn.sendHeartbeat(heartbeatUrl);
|
||||
}, 30000);
|
||||
if (isDev) console.log("Heartbeat interval set.");
|
||||
} else {
|
||||
if (isDev) console.log("No heartbeat URL set, will not send heartbeats for uptime monitoring.");
|
||||
}
|
||||
});
|
||||
|
||||
// slash-commands
|
||||
|
|
|
@ -20,6 +20,7 @@ const slashCommandFiles = fs.readdirSync('./slash-commands/').filter(file => fil
|
|||
const dotCommandFiles = fs.readdirSync('./dot-commands/').filter(file => file.endsWith('.js'));
|
||||
const dbfn = require('./dbfn.js');
|
||||
const { finished } = require('stream');
|
||||
const https = require('https');
|
||||
|
||||
const functions = {
|
||||
// Functions for managing and creating Collections
|
||||
|
@ -1045,9 +1046,9 @@ const functions = {
|
|||
},
|
||||
async sendWaterReminder(guildInfo, message, channelId, guild) {
|
||||
const reminderChannel = await guild.channels.fetch(channelId);
|
||||
const reminderEmbed = functions.builders.waterReminderEmbed(message, guildInfo);
|
||||
// const reminderEmbed = functions.builders.waterReminderEmbed(message, guildInfo);
|
||||
if (isDev) console.log(`WR: ${guild.name}: ${guildInfo.treeName}`);
|
||||
await reminderChannel.send(reminderEmbed).then(async m => {
|
||||
await reminderChannel.send(message).then(async m => {
|
||||
if (!m.deletable) return;
|
||||
await this.sleep(500).then(async () => {
|
||||
await m.delete().catch(e => console.error(e));
|
||||
|
@ -1058,9 +1059,9 @@ const functions = {
|
|||
},
|
||||
async sendFruitReminder(guildInfo, message, channelId, guild) {
|
||||
const reminderChannel = await guild.channels.fetch(channelId);
|
||||
const reminderEmbed = functions.builders.fruitReminderEmbed(message, guildInfo);
|
||||
// const reminderEmbed = functions.builders.fruitReminderEmbed(message, guildInfo);
|
||||
if (isDev) console.log(`FR: ${guild.name}: ${guildInfo.treeName}`);
|
||||
await reminderChannel.send(reminderEmbed).then(async m => {
|
||||
await reminderChannel.send(message).then(async m => {
|
||||
if (!m.deletable) return;
|
||||
await this.sleep(500).then(async () => {
|
||||
await m.delete().catch(e => console.error(e));
|
||||
|
@ -1142,6 +1143,20 @@ const functions = {
|
|||
}
|
||||
const errorId = digits.join("");
|
||||
return errorId;
|
||||
},
|
||||
async sendHeartbeat(url) {
|
||||
https.get(url, async (response) => {
|
||||
if (isDev) console.log("Sent Heartbeat Request: " + url);
|
||||
let data = '';
|
||||
|
||||
response.on('data', (chunk) => data += chunk);
|
||||
|
||||
response.on('end', () => {
|
||||
if (isDev) console.log("Received Heartbeat Response: " + data);
|
||||
parsedData = JSON.parse(data);
|
||||
if ( !(parsedData.ok) ) console.error("Heartbeat failed");
|
||||
});
|
||||
}).on("error", (error) => console.error(error));
|
||||
}
|
||||
};
|
||||
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "silvanus",
|
||||
"version": "1.2.7",
|
||||
"version": "1.2.9",
|
||||
"description": "Grow A Tree Companion Bot",
|
||||
"main": "main.js",
|
||||
"scripts": {
|
||||
|
|
Loading…
Reference in New Issue