Compare commits

..

13 Commits

Author SHA1 Message Date
304503f7d8 Merge pull request 'v3.6.1 Requests Expansion' (#32) from v3.6.1 into main
All checks were successful
NodBot Production Dockerization / build (push) Successful in 21s
Reviewed-on: #32
2026-10-01 19:38:34 +00:00
7b504a2312 Re-fix variable ref
All checks were successful
NodBot PE Dockerization / build (push) Successful in 21s
2026-10-01 15:32:38 -04:00
8039f8f1c7 Print raw error instead of trying to stringify it
All checks were successful
NodBot PE Dockerization / build (push) Successful in 20s
2026-10-01 15:30:45 -04:00
46e5079eaf Add client to sendAlert
All checks were successful
NodBot PE Dockerization / build (push) Successful in 19s
2026-10-01 15:28:03 -04:00
8580dda6c8 Change MessageEmbed Description to just a string
All checks were successful
NodBot PE Dockerization / build (push) Successful in 19s
2026-10-01 15:25:53 -04:00
211e07f5f0 Fix tagging system
All checks were successful
NodBot PE Dockerization / build (push) Successful in 10s
2026-10-01 15:15:09 -04:00
531167f2ba Add specific target to push in CI flow
Some checks failed
NodBot PE Dockerization / build (push) Failing after 3s
2026-10-01 14:39:12 -04:00
f7c63c8705 Tweak dev and prod workflow 2026-10-01 14:30:48 -04:00
acfe540148 Add error alerting in Discord, revert last fix to test alerting
All checks were successful
NodBot PE Dockerization / build (push) Successful in 20s
2026-10-01 13:15:28 -04:00
23a282a8a5 Fix var reference in reply text 2026-10-01 12:19:19 -04:00
fc941ad487 Add url to request upload
All checks were successful
NodBot PE Dockerization / build (push) Successful in 1m18s
2026-10-01 12:03:47 -04:00
e198ca3b4d Versioning 2026-10-01 10:20:28 -04:00
fb963cc153 Merge pull request 'v3.6.0 GIF Fix' (#31) from v3.6.0 into main
Reviewed-on: #31
2026-10-01 14:14:12 +00:00
7 changed files with 68 additions and 19 deletions

View File

@ -34,13 +34,13 @@ jobs:
- name: Build the Docker image - name: Build the Docker image
run: | run: |
cd /var/lib/act_runner/nodbot cd /var/lib/act_runner/nodbot
docker build . --file Dockerfile --tag v0idf1sh/nodbot-dev docker build --target dev . --file Dockerfile --tag v0idf1sh/nodbot:dev
- name: Log into Docker Hub - name: Log into Docker Hub
run: docker login -u $DHUB_UNAME -p $DHUB_PWORD run: docker login -u $DHUB_UNAME -p $DHUB_PWORD
- name: Push image to Docker Hub - name: Push image to Docker Hub
run: | run: |
cd /var/lib/act_runner/nodbot cd /var/lib/act_runner/nodbot
docker push v0idf1sh/nodbot-dev docker push v0idf1sh/nodbot:dev
- name: Restart the container - name: Restart the container
run: | run: |
cd /srv/docker/nodbot-dev cd /srv/docker/nodbot-dev

View File

@ -33,13 +33,13 @@ jobs:
- name: Build the Docker image - name: Build the Docker image
run: | run: |
cd /var/lib/act_runner/nodbot cd /var/lib/act_runner/nodbot
docker build . --file Dockerfile --tag v0idf1sh/nodbot docker build --target prod . --file Dockerfile --tag v0idf1sh/nodbot:prod
- name: Log into Docker Hub - name: Log into Docker Hub
run: docker login -u $DHUB_UNAME -p $DHUB_PWORD run: docker login -u $DHUB_UNAME -p $DHUB_PWORD
- name: Push image to Docker Hub - name: Push image to Docker Hub
run: | run: |
cd /var/lib/act_runner/nodbot cd /var/lib/act_runner/nodbot
docker push v0idf1sh/nodbot docker push v0idf1sh/nodbot:prod
- name: Restart the container - name: Restart the container
run: | run: |
cd /srv/docker/nodbot cd /srv/docker/nodbot

View File

@ -1,4 +1,8 @@
## v3.6.x ## v3.6.x
#### v3.6.1 (#32) Improving Requests
* Start logging message URLs and timestamps when requests are submitted.
* Plan to improve request submission process to interactive slash-command.
#### v3.6.0 (#31) Fixing GIF APIs #### v3.6.0 (#31) Fixing GIF APIs
* Switch from Tenor to Giphy for GIFs * Switch from Tenor to Giphy for GIFs

View File

@ -1,4 +1,15 @@
FROM node:18 # Dev Build
FROM node:18 AS dev
RUN mkdir -p /usr/src/app
WORKDIR /usr/src/app
COPY package.json ./
RUN npm install
COPY . .
# Invoke the bot without redirecting STDOUT and STDERR so that docker logs can be used.
CMD ["/bin/sh", "-c", "node main.js"]
FROM node:18 AS prod
RUN mkdir -p /usr/src/app RUN mkdir -p /usr/src/app
WORKDIR /usr/src/app WORKDIR /usr/src/app

View File

@ -5,13 +5,25 @@ module.exports = {
description: 'Submit a request to the bot developer.', description: 'Submit a request to the bot developer.',
usage: '<request or feedback>.request', usage: '<request or feedback>.request',
execute(message, commandData) { execute(message, commandData) {
const request = commandData.args; // Get the request information from the command data that was passed in
commandData.content = `Your request has been submitted!\nRequest: ${request}`; const requestText = commandData.args;
message.reply(fn.embeds.text(commandData)); const messageUrl = message.url;
commandData.content = `A new request has been submitted by ${message.author.tag}:\n${commandData.args}`; const requester = message.author.username;
message.client.users.fetch(process.env.ownerID).then(user => {
user.send(fn.embeds.text(commandData)); try {
}).catch(error => { console.error(error); }); fn.upload.request(requester, requestText, messageUrl, message.client);
fn.upload.request(commandData, message.client); // Set the content to sent a text embed notifying the user of success
commandData.content = `Your request has been submitted!\nRequest: ${requestText}`;
const replyEmbed = fn.embeds.text(commandData);
message.reply({ embeds: [ replyEmbed ]});
} catch(err) {
console.error(err);
commandData.content = "An error occurred while saving the request, please try again later.";
const replyEmbed = fn.embeds.text(commandData);
message.reply({ embeds: [ replyEmbed ]});
const errorEmbed = fn.embeds.error(`An error has occurred in command ${this.name}:\n${err}`);
fn.sendAlert(errorEmbed, message.client);
}
}, },
}; };

View File

@ -9,6 +9,7 @@ const dbPass = process.env.dbPass;
const dbPort = process.env.dbPort; const dbPort = process.env.dbPort;
const isDev = process.env.isDev; const isDev = process.env.isDev;
const ownerId = process.env.ownerId; const ownerId = process.env.ownerId;
const statusChannelId = process.env.statusChannelId;
// filesystem // filesystem
const fs = require('fs'); const fs = require('fs');
@ -302,11 +303,13 @@ const functions = {
return { embeds: [jointsEmbed], components: [jointsPageAR], ephemeral: true }; return { embeds: [jointsEmbed], components: [jointsPageAR], ephemeral: true };
}, },
text(commandData) { text(commandData) {
return { embeds: [new Discord.MessageEmbed() const textEmbed = new Discord.MessageEmbed()
.setAuthor({name: commandData.command}) .setAuthor({ name: commandData.command })
.setDescription(commandData.content) .setDescription(commandData.content)
.setTimestamp() .setTimestamp()
.setFooter({text: commandData.author})]}; .setFooter({text: commandData.author});
return textEmbed;
}, },
requests(commandData, indexedRequests) { requests(commandData, indexedRequests) {
const requestsEmbed = new Discord.MessageEmbed() const requestsEmbed = new Discord.MessageEmbed()
@ -458,6 +461,14 @@ const functions = {
.setDescription('* Data Collection – NodBot does collect personal data, including but not limited to: location, IP address, MAC address, physical address, mother\'s maiden name, social security number, credit card numbers, phone fingerprints, physical fingerprints, penis length and girth, first pet\'s name, city where you met your spouse, and city where your parents met.\n* Payment Info – All payments are processed through a sketchy-looking PayPal link. NodBot and voidf1sh take no responsibility if your bank, CPA, lawyer, or local PD calls you afterward.\n* Chat Logs – NodBot may or may not remember every dumbass thing you’ve ever typed. Just assume it does.\n* Third-Party Sharing – Your usage data may be shared with savage\'s mom\n* Right to Be Forgotten – You can request NodBot forget your existence, but that requires a one-time processing fee of $50.'); .setDescription('* Data Collection – NodBot does collect personal data, including but not limited to: location, IP address, MAC address, physical address, mother\'s maiden name, social security number, credit card numbers, phone fingerprints, physical fingerprints, penis length and girth, first pet\'s name, city where you met your spouse, and city where your parents met.\n* Payment Info – All payments are processed through a sketchy-looking PayPal link. NodBot and voidf1sh take no responsibility if your bank, CPA, lawyer, or local PD calls you afterward.\n* Chat Logs – NodBot may or may not remember every dumbass thing you’ve ever typed. Just assume it does.\n* Third-Party Sharing – Your usage data may be shared with savage\'s mom\n* Right to Be Forgotten – You can request NodBot forget your existence, but that requires a one-time processing fee of $50.');
return { content: announcement, embeds: [ embed1, embed2 ] }; return { content: announcement, embeds: [ embed1, embed2 ] };
},
error(errorText) {
const errorEmbed = new Discord.MessageEmbed()
.setAuthor({ name: "Error!" })
.setDescription(errorText)
.setFooter({ text: appVersion });
return errorEmbed;
} }
}, },
collect: { collect: {
@ -467,8 +478,8 @@ const functions = {
}, },
}, },
upload: { upload: {
request(commandData, client) { request(requester, requestText, messageUrl, client) {
const query = `INSERT INTO requests (author, request, status) VALUES (${db.escape(commandData.author)},${db.escape(commandData.args)},'Active')`; const query = `INSERT INTO requests (author, request, status, url) VALUES (${db.escape(requester)},${db.escape(requestText)},'Active',${db.escape(messageUrl)})`;
db.query(query, (err, rows, fields) => { db.query(query, (err, rows, fields) => {
if (err) throw err; if (err) throw err;
functions.download.requests(client); functions.download.requests(client);
@ -909,6 +920,17 @@ const functions = {
} }
const errorId = digits.join(""); const errorId = digits.join("");
return errorId; return errorId;
},
async sendAlert(embed, client) {
const statusChannel = await client.channels.fetch(statusChannelId)
.catch(err => {
console.error(err);
});
await statusChannel.send({ embeds: [ embed ] })
.catch(err => {
console.error(err);
});
} }
}; };

View File

@ -1,6 +1,6 @@
{ {
"name": "nodbot", "name": "nodbot",
"version": "3.6.0", "version": "3.6.1",
"description": "Nods and Nod Accessories", "description": "Nods and Nod Accessories",
"main": "main.js", "main": "main.js",
"dependencies": { "dependencies": {