mirror of
https://github.com/PreMiD/PreMiD.git
synced 2026-04-05 20:31:58 +02:00
*Should probably not leak my db credentials*
This commit is contained in:
2
.gitignore
vendored
2
.gitignore
vendored
@@ -4,4 +4,4 @@ dist
|
||||
website
|
||||
server
|
||||
.vscode
|
||||
DiscordBot
|
||||
.env
|
||||
74
DiscordBot/index.js
Normal file
74
DiscordBot/index.js
Normal file
@@ -0,0 +1,74 @@
|
||||
const Discord = require('discord.js');
|
||||
const client = new Discord.Client();
|
||||
var mysql = require('mysql')
|
||||
var utf8 = require('utf8')
|
||||
require('dotenv').load()
|
||||
|
||||
var con = mysql.createConnection({
|
||||
host: "localhost",
|
||||
user: process.env.dbUser,
|
||||
password: process.env.dbPassword,
|
||||
database: 'premid'
|
||||
});
|
||||
|
||||
con.connect(function(err) {
|
||||
if (err) throw err;
|
||||
console.log("Connected!");
|
||||
})
|
||||
|
||||
client.on('ready', () => {
|
||||
console.log(`Logged in as ${client.user.tag}!`);
|
||||
client.user.setStatus("invisible")
|
||||
setInterval(updateCredits, 5*1000)
|
||||
});
|
||||
|
||||
async function updateCredits() {
|
||||
var dbData = await query(`SELECT * FROM credits`)
|
||||
|
||||
var devRole = client.guilds.first().roles.find(r => r.name == "Developer").id
|
||||
var conRole = client.guilds.first().roles.find(r => r.name == "Contributor").id
|
||||
var patRole = client.guilds.first().roles.find(r => r.name == "Patron").id
|
||||
var donRole = client.guilds.first().roles.find(r => r.name == "Donator").id
|
||||
var traRole = client.guilds.first().roles.find(r => r.name == "Translator").id
|
||||
var pat20Role = client.guilds.first().roles.find(r => r.name == "20$").id
|
||||
var pat10Role = client.guilds.first().roles.find(r => r.name == "10$").id
|
||||
var pat5Role = client.guilds.first().roles.find(r => r.name == "5$").id
|
||||
var pat1Role = client.guilds.first().roles.find(r => r.name == "1$").id
|
||||
|
||||
var results = client.guilds.first().members.map(async m => {
|
||||
return [m, (m.roles.get(devRole) || m.roles.get(conRole) || m.roles.get(patRole) || m.roles.get(donRole) || m.roles.get(traRole))]
|
||||
})
|
||||
var patronLevel
|
||||
Promise.all(results).then(completed => {
|
||||
dbRows = dbData.rows
|
||||
completed.map(result => {
|
||||
patronLevel = "#000000"
|
||||
if(result[0].roles.has(pat20Role)) patronLevel = result[0].roles.get(pat20Role).hexColor
|
||||
if(result[0].roles.has(pat10Role)) patronLevel = result[0].roles.get(pat10Role).hexColor
|
||||
if(result[0].roles.has(pat5Role)) patronLevel = result[0].roles.get(pat5Role).hexColor
|
||||
if(result[0].roles.has(pat1Role)) patronLevel = result[0].roles.get(pat1Role).hexColor
|
||||
if(result[1]) {
|
||||
if(dbRows.find(row => row.userID == result[0].id)) {
|
||||
query(`UPDATE credits SET name = '${utf8.encode(result[0].displayName)}', avatarURL = '${result[0].user.avatarURL}', type = '${result[1].name}', color = '${result[1].hexColor}', patronColor = '${patronLevel}' WHERE userID = '${result[0].id}'`)
|
||||
} else {
|
||||
query(`INSERT INTO credits (userID, name, avatarURL, type, color, patronColor) VALUES ('${result[0].id}', '${utf8.encode(result[0].displayName)}', '${result[0].user.avatarURL}', '${result[1].name}', '${result[1].hexColor}', '${patronLevel}')`)
|
||||
}
|
||||
} else {
|
||||
if(dbRows.find(row => row.userID == result[0].id)) {
|
||||
query(`DELETE FROM credits WHERE userID = '${result[0].id}'`)
|
||||
}
|
||||
}
|
||||
})
|
||||
})
|
||||
}
|
||||
|
||||
function query(...data) {
|
||||
return new Promise((resolve, reject) => {
|
||||
con.query(...data, (err, rows, fields, result) => {
|
||||
if (err) return reject(err);
|
||||
resolve({ rows, fields, result });
|
||||
});
|
||||
}).catch(err => console.log("Error while querying + " + err))
|
||||
}
|
||||
|
||||
client.login('NTAzNTU3MDg3MDQxNjgzNDU4.DtuCFg.ysltcHzVGKx51h4qENdKocB88rc');
|
||||
137
DiscordBot/package-lock.json
generated
Normal file
137
DiscordBot/package-lock.json
generated
Normal file
@@ -0,0 +1,137 @@
|
||||
{
|
||||
"name": "premid",
|
||||
"version": "1.0.0",
|
||||
"lockfileVersion": 1,
|
||||
"requires": true,
|
||||
"dependencies": {
|
||||
"async-limiter": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.0.tgz",
|
||||
"integrity": "sha512-jp/uFnooOiO+L211eZOoSyzpOITMXx1rBITauYykG3BRYPu8h0UcxsPNB04RR5vo4Tyz3+ay17tR6JVf9qzYWg=="
|
||||
},
|
||||
"bignumber.js": {
|
||||
"version": "4.1.0",
|
||||
"resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-4.1.0.tgz",
|
||||
"integrity": "sha512-eJzYkFYy9L4JzXsbymsFn3p54D+llV27oTQ+ziJG7WFRheJcNZilgVXMG0LoZtlQSKBsJdWtLFqOD0u+U0jZKA=="
|
||||
},
|
||||
"core-util-is": {
|
||||
"version": "1.0.2",
|
||||
"resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
|
||||
"integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac="
|
||||
},
|
||||
"discord.js": {
|
||||
"version": "11.4.2",
|
||||
"resolved": "https://registry.npmjs.org/discord.js/-/discord.js-11.4.2.tgz",
|
||||
"integrity": "sha512-MDwpu0lMFTjqomijDl1Ed9miMQe6kB4ifKdP28QZllmLv/HVOJXhatRgjS8urp/wBlOfx+qAYSXcdI5cKGYsfg==",
|
||||
"requires": {
|
||||
"long": "4.0.0",
|
||||
"prism-media": "0.0.3",
|
||||
"snekfetch": "3.6.4",
|
||||
"tweetnacl": "1.0.0",
|
||||
"ws": "4.1.0"
|
||||
}
|
||||
},
|
||||
"dotenv": {
|
||||
"version": "6.1.0",
|
||||
"resolved": "https://registry.npmjs.org/dotenv/-/dotenv-6.1.0.tgz",
|
||||
"integrity": "sha512-/veDn2ztgRlB7gKmE3i9f6CmDIyXAy6d5nBq+whO9SLX+Zs1sXEgFLPi+aSuWqUuusMfbi84fT8j34fs1HaYUw=="
|
||||
},
|
||||
"inherits": {
|
||||
"version": "2.0.3",
|
||||
"resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
|
||||
"integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4="
|
||||
},
|
||||
"isarray": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
|
||||
"integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE="
|
||||
},
|
||||
"long": {
|
||||
"version": "4.0.0",
|
||||
"resolved": "https://registry.npmjs.org/long/-/long-4.0.0.tgz",
|
||||
"integrity": "sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA=="
|
||||
},
|
||||
"mysql": {
|
||||
"version": "2.16.0",
|
||||
"resolved": "https://registry.npmjs.org/mysql/-/mysql-2.16.0.tgz",
|
||||
"integrity": "sha512-dPbN2LHonQp7D5ja5DJXNbCLe/HRdu+f3v61aguzNRQIrmZLOeRoymBYyeThrR6ug+FqzDL95Gc9maqZUJS+Gw==",
|
||||
"requires": {
|
||||
"bignumber.js": "4.1.0",
|
||||
"readable-stream": "2.3.6",
|
||||
"safe-buffer": "5.1.2",
|
||||
"sqlstring": "2.3.1"
|
||||
}
|
||||
},
|
||||
"prism-media": {
|
||||
"version": "0.0.3",
|
||||
"resolved": "https://registry.npmjs.org/prism-media/-/prism-media-0.0.3.tgz",
|
||||
"integrity": "sha512-c9KkNifSMU/iXT8FFTaBwBMr+rdVcN+H/uNv1o+CuFeTThNZNTOrQ+RgXA1yL/DeLk098duAeRPP3QNPNbhxYQ=="
|
||||
},
|
||||
"process-nextick-args": {
|
||||
"version": "2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz",
|
||||
"integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw=="
|
||||
},
|
||||
"readable-stream": {
|
||||
"version": "2.3.6",
|
||||
"resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz",
|
||||
"integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==",
|
||||
"requires": {
|
||||
"core-util-is": "1.0.2",
|
||||
"inherits": "2.0.3",
|
||||
"isarray": "1.0.0",
|
||||
"process-nextick-args": "2.0.0",
|
||||
"safe-buffer": "5.1.2",
|
||||
"string_decoder": "1.1.1",
|
||||
"util-deprecate": "1.0.2"
|
||||
}
|
||||
},
|
||||
"safe-buffer": {
|
||||
"version": "5.1.2",
|
||||
"resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
|
||||
"integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
|
||||
},
|
||||
"snekfetch": {
|
||||
"version": "3.6.4",
|
||||
"resolved": "https://registry.npmjs.org/snekfetch/-/snekfetch-3.6.4.tgz",
|
||||
"integrity": "sha512-NjxjITIj04Ffqid5lqr7XdgwM7X61c/Dns073Ly170bPQHLm6jkmelye/eglS++1nfTWktpP6Y2bFXjdPlQqdw=="
|
||||
},
|
||||
"sqlstring": {
|
||||
"version": "2.3.1",
|
||||
"resolved": "https://registry.npmjs.org/sqlstring/-/sqlstring-2.3.1.tgz",
|
||||
"integrity": "sha1-R1OT/56RR5rqYtyvDKPRSYOn+0A="
|
||||
},
|
||||
"string_decoder": {
|
||||
"version": "1.1.1",
|
||||
"resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
|
||||
"integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
|
||||
"requires": {
|
||||
"safe-buffer": "5.1.2"
|
||||
}
|
||||
},
|
||||
"tweetnacl": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-1.0.0.tgz",
|
||||
"integrity": "sha1-cT2LgY2kIGh0C/aDhtBHnmb8ins="
|
||||
},
|
||||
"utf8": {
|
||||
"version": "3.0.0",
|
||||
"resolved": "https://registry.npmjs.org/utf8/-/utf8-3.0.0.tgz",
|
||||
"integrity": "sha512-E8VjFIQ/TyQgp+TZfS6l8yp/xWppSAHzidGiRrqe4bK4XP9pTRyKFgGJpO3SN7zdX4DeomTrwaseCHovfpFcqQ=="
|
||||
},
|
||||
"util-deprecate": {
|
||||
"version": "1.0.2",
|
||||
"resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
|
||||
"integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8="
|
||||
},
|
||||
"ws": {
|
||||
"version": "4.1.0",
|
||||
"resolved": "http://registry.npmjs.org/ws/-/ws-4.1.0.tgz",
|
||||
"integrity": "sha512-ZGh/8kF9rrRNffkLFV4AzhvooEclrOH0xaugmqGsIfFgOE/pIz4fMc4Ef+5HSQqTEug2S9JZIWDR47duDSLfaA==",
|
||||
"requires": {
|
||||
"async-limiter": "1.0.0",
|
||||
"safe-buffer": "5.1.2"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
17
DiscordBot/package.json
Normal file
17
DiscordBot/package.json
Normal file
@@ -0,0 +1,17 @@
|
||||
{
|
||||
"name": "premid",
|
||||
"version": "1.0.0",
|
||||
"description": "",
|
||||
"main": "index.js",
|
||||
"scripts": {
|
||||
"test": "echo \"Error: no test specified\" && exit 1"
|
||||
},
|
||||
"author": "Timeraa",
|
||||
"license": "ISC",
|
||||
"dependencies": {
|
||||
"discord.js": "^11.4.2",
|
||||
"dotenv": "^6.1.0",
|
||||
"mysql": "^2.16.0",
|
||||
"utf8": "^3.0.0"
|
||||
}
|
||||
}
|
||||
@@ -1,5 +1,5 @@
|
||||
$(document).ready(async function() {
|
||||
fetch('https://api.premid.app/credits').then(async response => {
|
||||
fetch('//localhost:8080/credits').then(async response => {
|
||||
var result = await response.json()
|
||||
var firstItemInRow;
|
||||
var currItemInRow = 0
|
||||
|
||||
@@ -2,11 +2,12 @@ const express = require('express')
|
||||
const app = express()
|
||||
var mysql = require('mysql')
|
||||
var utf8 = require('utf8')
|
||||
require('dotenv').load();
|
||||
|
||||
var con = mysql.createConnection({
|
||||
host: "localhost",
|
||||
user: "Timeraa",
|
||||
password: "Kw!BXS9Y8$",
|
||||
user: process.env.dbUser,
|
||||
password: process.env.dbPassword,
|
||||
database: 'premid'
|
||||
});
|
||||
|
||||
@@ -28,7 +29,7 @@ app.get('/credits', async function (req, res) {
|
||||
var result = await query("SELECT * FROM credits")
|
||||
var resultArray = []
|
||||
result.rows.map(row => {
|
||||
resultArray.push({name: utf8.decode(row.name), tag: row.tag, avatarURL: row.avatarURL, type: row.type})
|
||||
resultArray.push({name: utf8.decode(row.name), avatar: row.avatarURL, role: row.type, roleColor: row.color, patronColor: row.patronColor})
|
||||
})
|
||||
res.setHeader('Content-Type', 'application/json');
|
||||
res.send(JSON.stringify(resultArray));
|
||||
|
||||
2156
api/package-lock.json
generated
2156
api/package-lock.json
generated
File diff suppressed because it is too large
Load Diff
@@ -4,13 +4,15 @@
|
||||
"description": "",
|
||||
"main": "index.js",
|
||||
"scripts": {
|
||||
"test": "echo \"Error: no test specified\" && exit 1"
|
||||
"start": "nodemon index"
|
||||
},
|
||||
"author": "Timeraa",
|
||||
"license": "ISC",
|
||||
"dependencies": {
|
||||
"dotenv": "^6.1.0",
|
||||
"express": "^4.16.4",
|
||||
"mysql": "^2.16.0",
|
||||
"nodemon": "^1.18.7",
|
||||
"utf8": "^3.0.0"
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user