generated from voidf1sh/discord-bot-template
Bring custom modules over from main repo
This commit is contained in:
parent
35a34708d3
commit
be970f042f
79
modules/Databases.js
Normal file
79
modules/Databases.js
Normal file
@ -0,0 +1,79 @@
|
|||||||
|
// Custom module for working with mySQL databases dev'd by voidf1sh
|
||||||
|
// Import the mySQL module
|
||||||
|
const mysql = require('mysql');
|
||||||
|
// Import environment variables for database connections
|
||||||
|
const dotenv = require('dotenv');
|
||||||
|
dotenv.config();
|
||||||
|
|
||||||
|
module.exports = {
|
||||||
|
getData(queryParts) {
|
||||||
|
// Return a Promise so we can resolve with data later
|
||||||
|
return new Promise((resolve, reject) => {
|
||||||
|
// Set up the database connection
|
||||||
|
const db = mysql.createConnection({
|
||||||
|
host: process.env.DBHOST,
|
||||||
|
user: process.env.DBUSER,
|
||||||
|
password: process.env.DBPASS,
|
||||||
|
database: process.env.DBNAME,
|
||||||
|
port: process.env.DBPORT
|
||||||
|
});
|
||||||
|
// Open the connection
|
||||||
|
db.connect((err) => {
|
||||||
|
if (err) {
|
||||||
|
reject(`Error connecting to the database: ${err.message}`);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
db.query(queryParts.rawQuery, queryParts.values, (err, results) => {
|
||||||
|
if (err) {
|
||||||
|
reject("Error fetching the data: " + err.message + "\nOffending Query: " + query);
|
||||||
|
// Close the database connection
|
||||||
|
db.end();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
// If an empty set is returned
|
||||||
|
if (results.length == 0) {
|
||||||
|
reject("No results were returned.");
|
||||||
|
// Close the database connection
|
||||||
|
db.end();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
// Close the database connection
|
||||||
|
db.end();
|
||||||
|
resolve(results);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
},
|
||||||
|
setData(queryParts) {
|
||||||
|
// Return a Promise so we can resolve with data later
|
||||||
|
return new Promise((resolve, reject) => {
|
||||||
|
// Set up the database connection
|
||||||
|
const db = mysql.createConnection({
|
||||||
|
host: process.env.DBHOST,
|
||||||
|
user: process.env.DBUSER,
|
||||||
|
password: process.env.DBPASS,
|
||||||
|
database: process.env.DBNAME,
|
||||||
|
port: process.env.DBPORT
|
||||||
|
});
|
||||||
|
// Open the connection
|
||||||
|
db.connect((err) => {
|
||||||
|
if (err) {
|
||||||
|
reject(`Error connecting to the database: ${err.message}`);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
db.query(queryParts.rawQuery, queryParts.values, (err, results) => {
|
||||||
|
if (err) {
|
||||||
|
reject(`Error setting the data: ${err.message}\nOffending Query: ${query}`);
|
||||||
|
// Close the database connection
|
||||||
|
db.end();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
// Close the database connection
|
||||||
|
db.end();
|
||||||
|
resolve(`Query executed successfully: ${results.affectedRows} row changed.`);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
355
modules/NodBot.js
Normal file
355
modules/NodBot.js
Normal file
@ -0,0 +1,355 @@
|
|||||||
|
// Custom classes for NodBot
|
||||||
|
|
||||||
|
const Collection = require('@discordjs/collection');
|
||||||
|
|
||||||
|
module.exports = {
|
||||||
|
CommandData: class {
|
||||||
|
constructor() {
|
||||||
|
this.name = "";
|
||||||
|
this.type = ""; // "dot" or "slash"
|
||||||
|
this.isValid = false;
|
||||||
|
this.guildId = "";
|
||||||
|
}
|
||||||
|
},
|
||||||
|
GlobalContentManager: class {
|
||||||
|
constructor(collections) {
|
||||||
|
const { pastas, joints, mds, gifs, strains } = collections;
|
||||||
|
this.pastas = (pastas instanceof Collection) ? pastas : new Collection();
|
||||||
|
this.joints = (joints instanceof Collection) ? joints: new Collection();
|
||||||
|
this.mds = (mds instanceof Collection) ? mds : new Collection();
|
||||||
|
this.gifs = (gifs instanceof Collection) ? gifs : new Collection();
|
||||||
|
this.strains = (strains instanceof Collection) ? strains : new Collection();
|
||||||
|
this.guildId = "GLOBAL";
|
||||||
|
|
||||||
|
this.queryBuilders = {
|
||||||
|
insert: {
|
||||||
|
pasta(title, content) {
|
||||||
|
// Upload a copypasta to the database
|
||||||
|
const rawQuery = "INSERT INTO ?? (??, ??, ??) VALUES (?, ?, ?)";
|
||||||
|
const values = ["pastas", "title", "content", "guild_id", title, content, this.guildId];
|
||||||
|
return {
|
||||||
|
rawQuery: rawQuery,
|
||||||
|
values: values
|
||||||
|
}
|
||||||
|
},
|
||||||
|
joint(content) {
|
||||||
|
// Upload a stoner catchphrase to the database
|
||||||
|
const rawQuery = "INSERT INTO ?? (??, ??) VALUES (?, ?)";
|
||||||
|
const values = ["joints", "content", "guild_id", content, this.guildId];
|
||||||
|
return {
|
||||||
|
rawQuery: rawQuery,
|
||||||
|
values: values
|
||||||
|
}
|
||||||
|
},
|
||||||
|
md(content) {
|
||||||
|
// Upload medical advice to the database
|
||||||
|
const rawQuery = "INSERT INTO ?? (??, ??) VALUES (?, ?)";
|
||||||
|
const values = ["mds", "content", "guild_id", content, this.guildId];
|
||||||
|
return {
|
||||||
|
rawQuery: rawQuery,
|
||||||
|
values: values
|
||||||
|
}
|
||||||
|
},
|
||||||
|
media(title, url) {
|
||||||
|
// Upload an embeddable media url to the database
|
||||||
|
const rawQuery = "INSERT INTO ?? (??, ??, ??) VALUES (?, ?, ?)";
|
||||||
|
const values = ["media", "title", "url", "guild_id", title, url, this.guildId];
|
||||||
|
return {
|
||||||
|
rawQuery: rawQuery,
|
||||||
|
values: values
|
||||||
|
}
|
||||||
|
},
|
||||||
|
strain(name, type, effects, flavor, rating) {
|
||||||
|
// Upload an embeddable media url to the database
|
||||||
|
const rawQuery = "INSERT INTO ?? (??, ??, ??) VALUES (?, ?, ?)";
|
||||||
|
const values = ["media", "title", "url", "guild_id", title, url, this.guildId];
|
||||||
|
return {
|
||||||
|
rawQuery: rawQuery,
|
||||||
|
values: values
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
select: {
|
||||||
|
pasta(title) {
|
||||||
|
// Fetch a copypasta from the database
|
||||||
|
const rawQuery = "SELECT * FROM ?? WHERE ?? = ? AND ?? = ?";
|
||||||
|
const values = ["pastas", "title", title, "guild_id", this.guildId];
|
||||||
|
return {
|
||||||
|
rawQuery: rawQuery,
|
||||||
|
values: values
|
||||||
|
}
|
||||||
|
},
|
||||||
|
joint(id) {
|
||||||
|
// Fetch a stoner catchphrase from the database
|
||||||
|
const rawQuery = "SELECT * FROM ?? WHERE ?? = ? AND ?? = ?";
|
||||||
|
const values = ["joints", "id", id, "guild_id", this.guildId];
|
||||||
|
return {
|
||||||
|
rawQuery: rawQuery,
|
||||||
|
values: values
|
||||||
|
}
|
||||||
|
},
|
||||||
|
md(id) {
|
||||||
|
// Fetch medical advice from the database
|
||||||
|
const rawQuery = "SELECT * FROM ?? WHERE ?? = ? AND ?? = ?";
|
||||||
|
const values = ["mds", "id", id, "guild_id", this.guildId];
|
||||||
|
return {
|
||||||
|
rawQuery: rawQuery,
|
||||||
|
values: values
|
||||||
|
}
|
||||||
|
},
|
||||||
|
media(title) {
|
||||||
|
// Fetch an embeddable media url from the database
|
||||||
|
const rawQuery = "SELECT * FROM ?? WHERE ?? = ? AND ?? = ?";
|
||||||
|
const values = ["media", "title", title, "guild_id", this.guildId];
|
||||||
|
return {
|
||||||
|
rawQuery: rawQuery,
|
||||||
|
values: values
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
update: {
|
||||||
|
pasta(title, content) {
|
||||||
|
// Update a copypasta in the database
|
||||||
|
const rawQuery = "UPDATE ?? SET ? WHERE ?? = ? AND ?? = ?";
|
||||||
|
const values = ["pastas", {content: content}, "title", title, "guild_id", this.guildId];
|
||||||
|
return {
|
||||||
|
rawQuery: rawQuery,
|
||||||
|
values: values
|
||||||
|
}
|
||||||
|
},
|
||||||
|
joint(id, content) {
|
||||||
|
// Update a stoner catchphrase in the database
|
||||||
|
const rawQuery = "UPDATE ?? SET ? WHERE ?? = ? AND ?? = ?";
|
||||||
|
const values = ["joints", {content: content}, "id", id, "guild_id", this.guildId];
|
||||||
|
return {
|
||||||
|
rawQuery: rawQuery,
|
||||||
|
values: values
|
||||||
|
}
|
||||||
|
},
|
||||||
|
md(id, content) {
|
||||||
|
// Update medical advice in the database
|
||||||
|
const rawQuery = "UPDATE ?? SET ? WHERE ?? = ? AND ?? = ?";
|
||||||
|
const values = ["mds", {content: content}, "id", id, "guild_id", this.guildId];
|
||||||
|
return {
|
||||||
|
rawQuery: rawQuery,
|
||||||
|
values: values
|
||||||
|
}
|
||||||
|
},
|
||||||
|
media(title, url) {
|
||||||
|
// Update an embeddable media url in the database
|
||||||
|
const rawQuery = "UPDATE ?? SET ? WHERE ?? = ? AND ?? = ?";
|
||||||
|
const values = ["media", {url: url}, "title", title, "guild_id", this.guildId];
|
||||||
|
return {
|
||||||
|
rawQuery: rawQuery,
|
||||||
|
values: values
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
delete: {
|
||||||
|
pasta(title) {
|
||||||
|
// Delete a copypasta from the database
|
||||||
|
const rawQuery = "DELETE FROM ?? WHERE ?? = ? AND ?? = ?";
|
||||||
|
const values = ["pastas", "title", title, "guild_id", this.guildId];
|
||||||
|
return {
|
||||||
|
rawQuery: rawQuery,
|
||||||
|
values: values
|
||||||
|
}
|
||||||
|
},
|
||||||
|
joint(id) {
|
||||||
|
// Delete a stoner catchphrase from the database
|
||||||
|
const rawQuery = "DELETE FROM ?? WHERE ?? = ? AND ?? = ?";
|
||||||
|
const values = ["joints", "id", id, "guild_id", this.guildId];
|
||||||
|
return {
|
||||||
|
rawQuery: rawQuery,
|
||||||
|
values: values
|
||||||
|
}
|
||||||
|
},
|
||||||
|
md(id) {
|
||||||
|
// Delete medical advice from the database
|
||||||
|
const rawQuery = "DELETE FROM ?? WHERE ?? = ? AND ?? = ?";
|
||||||
|
const values = ["mds", "id", id, "guild_id", this.guildId];
|
||||||
|
return {
|
||||||
|
rawQuery: rawQuery,
|
||||||
|
values: values
|
||||||
|
}
|
||||||
|
},
|
||||||
|
media(title) {
|
||||||
|
// Delete an embeddable media url from the database
|
||||||
|
const rawQuery = "DELETE FROM ?? WHERE ?? = ? AND ?? = ?";
|
||||||
|
const values = ["media", "title", title, "guild_id", this.guildId];
|
||||||
|
return {
|
||||||
|
rawQuery: rawQuery,
|
||||||
|
values: values
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
},
|
||||||
|
GuildContentManager: class {
|
||||||
|
constructor(collections) {
|
||||||
|
const { pastas, joints, mds, gifs } = collections;
|
||||||
|
this.pastas = (pastas instanceof Collection) ? pastas : new Collection();
|
||||||
|
this.joints = (joints instanceof Collection) ? joints: new Collection();
|
||||||
|
this.mds = (mds instanceof Collection) ? mds : new Collection();
|
||||||
|
this.gifs = (gifs instanceof Collection) ? gifs : new Collection();
|
||||||
|
this.guildId = "";
|
||||||
|
|
||||||
|
this.queryBuilders = {
|
||||||
|
insert: {
|
||||||
|
pasta(title, content) {
|
||||||
|
// Upload a copypasta to the database
|
||||||
|
const rawQuery = "INSERT INTO ?? (??, ??, ??) VALUES (?, ?, ?)";
|
||||||
|
const values = ["pastas", "title", "content", "guild_id", title, content, this.guildId];
|
||||||
|
return {
|
||||||
|
rawQuery: rawQuery,
|
||||||
|
values: values
|
||||||
|
}
|
||||||
|
},
|
||||||
|
joint(content) {
|
||||||
|
// Upload a stoner catchphrase to the database
|
||||||
|
const rawQuery = "INSERT INTO ?? (??, ??) VALUES (?, ?)";
|
||||||
|
const values = ["joints", "content", "guild_id", content, this.guildId];
|
||||||
|
return {
|
||||||
|
rawQuery: rawQuery,
|
||||||
|
values: values
|
||||||
|
}
|
||||||
|
},
|
||||||
|
md(content) {
|
||||||
|
// Upload medical advice to the database
|
||||||
|
const rawQuery = "INSERT INTO ?? (??, ??) VALUES (?, ?)";
|
||||||
|
const values = ["mds", "content", "guild_id", content, this.guildId];
|
||||||
|
return {
|
||||||
|
rawQuery: rawQuery,
|
||||||
|
values: values
|
||||||
|
}
|
||||||
|
},
|
||||||
|
media(title, url) {
|
||||||
|
// Upload an embeddable media url to the database
|
||||||
|
const rawQuery = "INSERT INTO ?? (??, ??, ??) VALUES (?, ?, ?)";
|
||||||
|
const values = ["media", "title", "url", "guild_id", title, url, this.guildId];
|
||||||
|
return {
|
||||||
|
rawQuery: rawQuery,
|
||||||
|
values: values
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
select: {
|
||||||
|
pasta(title) {
|
||||||
|
// Fetch a copypasta from the database
|
||||||
|
const rawQuery = "SELECT * FROM ?? WHERE ?? = ? AND ?? = ?";
|
||||||
|
const values = ["pastas", "title", title, "guild_id", this.guildId];
|
||||||
|
return {
|
||||||
|
rawQuery: rawQuery,
|
||||||
|
values: values
|
||||||
|
}
|
||||||
|
},
|
||||||
|
joint(id) {
|
||||||
|
// Fetch a stoner catchphrase from the database
|
||||||
|
const rawQuery = "SELECT * FROM ?? WHERE ?? = ? AND ?? = ?";
|
||||||
|
const values = ["joints", "id", id, "guild_id", this.guildId];
|
||||||
|
return {
|
||||||
|
rawQuery: rawQuery,
|
||||||
|
values: values
|
||||||
|
}
|
||||||
|
},
|
||||||
|
md(id) {
|
||||||
|
// Fetch medical advice from the database
|
||||||
|
const rawQuery = "SELECT * FROM ?? WHERE ?? = ? AND ?? = ?";
|
||||||
|
const values = ["mds", "id", id, "guild_id", this.guildId];
|
||||||
|
return {
|
||||||
|
rawQuery: rawQuery,
|
||||||
|
values: values
|
||||||
|
}
|
||||||
|
},
|
||||||
|
media(title) {
|
||||||
|
// Fetch an embeddable media url from the database
|
||||||
|
const rawQuery = "SELECT * FROM ?? WHERE ?? = ? AND ?? = ?";
|
||||||
|
const values = ["media", "title", title, "guild_id", this.guildId];
|
||||||
|
return {
|
||||||
|
rawQuery: rawQuery,
|
||||||
|
values: values
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
update: {
|
||||||
|
pasta(title, content) {
|
||||||
|
// Update a copypasta in the database
|
||||||
|
const rawQuery = "UPDATE ?? SET ? WHERE ?? = ? AND ?? = ?";
|
||||||
|
const values = ["pastas", {content: content}, "title", title, "guild_id", this.guildId];
|
||||||
|
return {
|
||||||
|
rawQuery: rawQuery,
|
||||||
|
values: values
|
||||||
|
}
|
||||||
|
},
|
||||||
|
joint(id, content) {
|
||||||
|
// Update a stoner catchphrase in the database
|
||||||
|
const rawQuery = "UPDATE ?? SET ? WHERE ?? = ? AND ?? = ?";
|
||||||
|
const values = ["joints", {content: content}, "id", id, "guild_id", this.guildId];
|
||||||
|
return {
|
||||||
|
rawQuery: rawQuery,
|
||||||
|
values: values
|
||||||
|
}
|
||||||
|
},
|
||||||
|
md(id, content) {
|
||||||
|
// Update medical advice in the database
|
||||||
|
const rawQuery = "UPDATE ?? SET ? WHERE ?? = ? AND ?? = ?";
|
||||||
|
const values = ["mds", {content: content}, "id", id, "guild_id", this.guildId];
|
||||||
|
return {
|
||||||
|
rawQuery: rawQuery,
|
||||||
|
values: values
|
||||||
|
}
|
||||||
|
},
|
||||||
|
media(title, url) {
|
||||||
|
// Update an embeddable media url in the database
|
||||||
|
const rawQuery = "UPDATE ?? SET ? WHERE ?? = ? AND ?? = ?";
|
||||||
|
const values = ["media", {url: url}, "title", title, "guild_id", this.guildId];
|
||||||
|
return {
|
||||||
|
rawQuery: rawQuery,
|
||||||
|
values: values
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
delete: {
|
||||||
|
pasta(title) {
|
||||||
|
// Delete a copypasta from the database
|
||||||
|
const rawQuery = "DELETE FROM ?? WHERE ?? = ? AND ?? = ?";
|
||||||
|
const values = ["pastas", "title", title, "guild_id", this.guildId];
|
||||||
|
return {
|
||||||
|
rawQuery: rawQuery,
|
||||||
|
values: values
|
||||||
|
}
|
||||||
|
},
|
||||||
|
joint(id) {
|
||||||
|
// Delete a stoner catchphrase from the database
|
||||||
|
const rawQuery = "DELETE FROM ?? WHERE ?? = ? AND ?? = ?";
|
||||||
|
const values = ["joints", "id", id, "guild_id", this.guildId];
|
||||||
|
return {
|
||||||
|
rawQuery: rawQuery,
|
||||||
|
values: values
|
||||||
|
}
|
||||||
|
},
|
||||||
|
md(id) {
|
||||||
|
// Delete medical advice from the database
|
||||||
|
const rawQuery = "DELETE FROM ?? WHERE ?? = ? AND ?? = ?";
|
||||||
|
const values = ["mds", "id", id, "guild_id", this.guildId];
|
||||||
|
return {
|
||||||
|
rawQuery: rawQuery,
|
||||||
|
values: values
|
||||||
|
}
|
||||||
|
},
|
||||||
|
media(title) {
|
||||||
|
// Delete an embeddable media url from the database
|
||||||
|
const rawQuery = "DELETE FROM ?? WHERE ?? = ? AND ?? = ?";
|
||||||
|
const values = ["media", "title", title, "guild_id", this.guildId];
|
||||||
|
return {
|
||||||
|
rawQuery: rawQuery,
|
||||||
|
values: values
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user