Postgres is alive

This commit is contained in:
Stanislaw
2022-03-11 21:16:45 +01:00
parent 5d5efa884d
commit f2371974cd
7 changed files with 158 additions and 97 deletions

186
cfg.json
View File

@@ -1,95 +1,95 @@
{ {
"prefix": ".", "prefix": "&",
"hexBlue": "61f2ea", "hexBlue": "61f2ea",
"hexRed": "fb636b", "hexRed": "fb636b",
"iconurl": "https://i.imgur.com/4AmRDyX.png", "iconurl": "https://i.imgur.com/4AmRDyX.png",
"timeout": 4000, "timeout": 4000,
"rolesList": [ "rolesList": [
"tf2", "tf2",
"liga", "liga",
"csgo", "csgo",
"minecraft", "minecraft",
"rainbow-six", "rainbow-six",
"apex", "apex",
"genshin", "genshin",
"valorant" "valorant"
], ],
"embedFields": { "embedFields": {
"witaj": [ "witaj": [
{ {
"name": "Zasady", "name": "Zasady",
"value": "Zasady serwera są spisane na kanale `regulamin`. Pamiętajcie, by tam zajrzeć." "value": "Zasady serwera są spisane na kanale `regulamin`. Pamiętajcie, by tam zajrzeć."
}, },
{ {
"name": "Gractwo WWW", "name": "Gractwo WWW",
"value": "http://gractwo.pl", "value": "http://gractwo.pl",
"inline": true "inline": true
}, },
{ {
"name": "Gractwo DISCORD", "name": "Gractwo DISCORD",
"value": "http://gractwo.pl/discord", "value": "http://gractwo.pl/discord",
"inline": true "inline": true
}, },
{ {
"name": "DISCORD bezpośredni", "name": "DISCORD bezpośredni",
"value": "discord.gg/NBXq95C", "value": "discord.gg/NBXq95C",
"inline": true "inline": true
}, },
{ {
"name": "Gractwo TWITTER", "name": "Gractwo TWITTER",
"value": "http://gractwo.pl/twitter", "value": "http://gractwo.pl/twitter",
"inline": true "inline": true
}, },
{ {
"name": "Gractwo YOUTUBE", "name": "Gractwo YOUTUBE",
"value": "http://gractwo.pl/youtube", "value": "http://gractwo.pl/youtube",
"inline": true "inline": true
}, },
{ {
"name": "Gractwo GITHUB", "name": "Gractwo GITHUB",
"value": "http://gractwo.pl/github", "value": "http://gractwo.pl/github",
"inline": true "inline": true
} }
], ],
"regulamin": [ "regulamin": [
{ {
"name": "§1 Szacunek", "name": "§1 Szacunek",
"value": "Na naszym serwerze obowiązuje szacunek do innych osób podczas niesatyrycznej dyskusji." "value": "Na naszym serwerze obowiązuje szacunek do innych osób podczas niesatyrycznej dyskusji."
}, },
{ {
"name": "§2 Spam / Trolling", "name": "§2 Spam / Trolling",
"value": "Jeżeli będziesz bezużytecznie spamować lub nieprzyjmenie się zachowywać zostaniesz zbanowany." "value": "Jeżeli będziesz bezużytecznie spamować lub nieprzyjmenie się zachowywać zostaniesz zbanowany."
}, },
{ {
"name": "§3 Bagno", "name": "§3 Bagno",
"value": "Kanał #bagno jest najbardziej wyluzowanym kanałem na naszym serwerze. Nie oznacza to jednak, że nie jest monitorowany. Jeżeli czujesz, że rzecz którą chcesz tam umieścić jest nadzwyczajnie kontrowersyjna, zastanów się dwa razy przed wciśnięciem Enter." "value": "Kanał #bagno jest najbardziej wyluzowanym kanałem na naszym serwerze. Nie oznacza to jednak, że nie jest monitorowany. Jeżeli czujesz, że rzecz którą chcesz tam umieścić jest nadzwyczajnie kontrowersyjna, zastanów się dwa razy przed wciśnięciem Enter."
}, },
{ {
"name": "§4 Poprawne Kanały", "name": "§4 Poprawne Kanały",
"value": "Rozmowy na dany temat powinny toczyć się w kanałach do tego przeznaczonych." "value": "Rozmowy na dany temat powinny toczyć się w kanałach do tego przeznaczonych."
}, },
{ {
"name": "§5 Memy i Gify", "name": "§5 Memy i Gify",
"value": "Memy i Gify nie są zbyt przyjemne dla oka bez kontekstu. Najlepiej jest nie postować ich, jeżeli nie pasują do prowadzonej aktualnie dyskusji." "value": "Memy i Gify nie są zbyt przyjemne dla oka bez kontekstu. Najlepiej jest nie postować ich, jeżeli nie pasują do prowadzonej aktualnie dyskusji."
}, },
{ {
"name": "§6 Reklamy", "name": "§6 Reklamy",
"value": "Zakaz reklam bez zezwolenia moderatora lub administratora. Pozwolenia na reklamę muszą być wydane przed jej zamieszczeniem." "value": "Zakaz reklam bez zezwolenia moderatora lub administratora. Pozwolenia na reklamę muszą być wydane przed jej zamieszczeniem."
}, },
{ {
"name": "§7 Przestrzeganie Regulaminu", "name": "§7 Przestrzeganie Regulaminu",
"value": "Przestrzeganie regulaminu jest obowiązkowe, a to że go ktoś nie przeczytał nic nie zmienia." "value": "Przestrzeganie regulaminu jest obowiązkowe, a to że go ktoś nie przeczytał nic nie zmienia."
}, },
{ {
"name": "§8 Obcowanie z botem", "name": "§8 Obcowanie z botem",
"value": "Próby intencjonalnego łamania bota nie są mile widziane, tak jak nadużywanie go w celach spamu kanałów." "value": "Próby intencjonalnego łamania bota nie są mile widziane, tak jak nadużywanie go w celach spamu kanałów."
}, },
{ {
"name": "§9 Warunki Użytkowania Discord (ToS)", "name": "§9 Warunki Użytkowania Discord (ToS)",
"value": "Nasz serwer, jak każdy inny, musi przestrzegać zasad zapisanych w warunkach użytkowania Discorda. Przypominamy o nich, bo choć nie są zbyt restrykcyjne, nie pozwalają na kilka określonych rzeczy." "value": "Nasz serwer, jak każdy inny, musi przestrzegać zasad zapisanych w warunkach użytkowania Discorda. Przypominamy o nich, bo choć nie są zbyt restrykcyjne, nie pozwalają na kilka określonych rzeczy."
} }
], ],
"pomocDesc": "Komenda objaśniająca bota i jego zastosowanie, a także dostępne komendy.\n\nBot Gractwa funkcjonuje jako własne rozwiązanie na problemy z administrowaniem serwera Discord. Umożliwia między innymi samo-nadawanie rolek od gier, lub odsłuchiwanie muzyki.\n\nPoniżej znajduje się lista dostępnych komend:", "pomocDesc": "Komenda objaśniająca bota i jego zastosowanie, a także dostępne komendy.\n\nBot Gractwa funkcjonuje jako własne rozwiązanie na problemy z administrowaniem serwera Discord. Umożliwia między innymi samo-nadawanie rolek od gier, lub odsłuchiwanie muzyki.\n\nPoniżej znajduje się lista dostępnych komend:",
"rolkiDesc": "Poniżej widnieją przyciski służące do przyznawania bądź odejmowanie sobie ról powiązanych z grami. Służą one do oznaczania wszystkich zainteresowanych daną grą na określonym kanale." "rolkiDesc": "Poniżej widnieją przyciski służące do przyznawania bądź odejmowanie sobie ról powiązanych z grami. Służą one do oznaczania wszystkich zainteresowanych daną grą na określonym kanale."
} }
} }

View File

@@ -1,8 +1,19 @@
const discordjs = require("discord.js"); const discordjs = require("discord.js");
const fs = require("fs"); const fs = require("fs");
const redis = require("./src/functions/redis"); const redis = require("./src/functions/redis");
const sql = require("./src/functions/postgres");
const { createClient } = require("redis"); const { createClient } = require("redis");
const { connect } = require("http2"); const { Client } = require("pg");
const colors = require("colors");
colors.setTheme({
prompt: "grey",
info: "green",
warn: "yellow",
debug: "blue",
error: "red",
});
require("dotenv").config(); require("dotenv").config();
const cl = new discordjs.Client({ const cl = new discordjs.Client({
@@ -13,10 +24,22 @@ const cl = new discordjs.Client({
], ],
}); });
//redis connect
const redisConnection = createClient({ const redisConnection = createClient({
url: process.env.REDIS_TOKEN, url: process.env.REDIS_TOKEN,
}); });
redisConnection.connect(); redisConnection
.connect()
.then(() => console.log("✔️ redis connected".info))
.catch((err) => console.error(err.stack.red));
//postgresql connect
const client = new Client();
client
.connect()
.then(() => console.log("✔️ postgres connected".info))
.catch((err) => console.error(err.stack.red));
cl.cfg = require("./cfg.json"); cl.cfg = require("./cfg.json");
cl.cmds = new discordjs.Collection(); cl.cmds = new discordjs.Collection();
@@ -33,6 +56,9 @@ cl.on("messageCreate", async (msg) => {
if (msg.author.bot) return; if (msg.author.bot) return;
if (!msg.content.startsWith(cl.cfg.prefix)) { if (!msg.content.startsWith(cl.cfg.prefix)) {
if (await redis.expCheck(msg.author.id, redisConnection)) { if (await redis.expCheck(msg.author.id, redisConnection)) {
sql.addExp(client, msg.author.id);
} else {
sql.messageCount(client, msg.author.id);
} }
} }
const args = msg.content.slice(cl.cfg.prefix.length).trim().split(/ +/); const args = msg.content.slice(cl.cfg.prefix.length).trim().split(/ +/);
@@ -57,7 +83,7 @@ cl.on("messageCreate", async (msg) => {
}); });
cl.once("ready", () => { cl.once("ready", () => {
console.log(`bot ready; logged in as ${cl.user.tag}\n--`); console.log(`bot ready; logged in as ${cl.user.tag}\n--`.info);
cl.user.setActivity(".pomoc", { type: "LISTENING" }); cl.user.setActivity(".pomoc", { type: "LISTENING" });
}); });
cl.login(process.env.TOKEN); // here comes the boooy cl.login(process.env.TOKEN); // here comes the boooy

14
package-lock.json generated
View File

@@ -11,6 +11,7 @@
"dependencies": { "dependencies": {
"@discordjs/opus": "^0.5.3", "@discordjs/opus": "^0.5.3",
"@discordjs/voice": "^0.7.5", "@discordjs/voice": "^0.7.5",
"colors": "^1.4.0",
"daemon": "^1.1.0", "daemon": "^1.1.0",
"discord.js": "^13.1.0", "discord.js": "^13.1.0",
"dotenv": "^10.0.0", "dotenv": "^10.0.0",
@@ -637,6 +638,14 @@
"color-support": "bin.js" "color-support": "bin.js"
} }
}, },
"node_modules/colors": {
"version": "1.4.0",
"resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz",
"integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==",
"engines": {
"node": ">=0.1.90"
}
},
"node_modules/combined-stream": { "node_modules/combined-stream": {
"version": "1.0.8", "version": "1.0.8",
"resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",
@@ -2819,6 +2828,11 @@
"resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz",
"integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==" "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg=="
}, },
"colors": {
"version": "1.4.0",
"resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz",
"integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA=="
},
"combined-stream": { "combined-stream": {
"version": "1.0.8", "version": "1.0.8",
"resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",

View File

@@ -23,6 +23,7 @@
"dependencies": { "dependencies": {
"@discordjs/opus": "^0.5.3", "@discordjs/opus": "^0.5.3",
"@discordjs/voice": "^0.7.5", "@discordjs/voice": "^0.7.5",
"colors": "^1.4.0",
"daemon": "^1.1.0", "daemon": "^1.1.0",
"discord.js": "^13.1.0", "discord.js": "^13.1.0",
"dotenv": "^10.0.0", "dotenv": "^10.0.0",

View File

@@ -1 +1,21 @@
module.exports = {}; module.exports = {
messageCount: async function (connect, userID) {
query = `UPDATE users SET msg_count = msg_count + 1 WHERE users.user_id = '${userID}'`;
await connect.query(query);
},
addExp: async function (connect, userID) {
let query = `SELECT users.user_id FROM users WHERE users.user_id = '${userID}'`;
const check = await connect.query(query);
if (check.rowCount == 0) {
query = `INSERT INTO users(user_id,msg_count,exp) VALUES ('${userID}',1,${Math.floor(
Math.random() * 25
)},)`;
await connect.query(query);
} else {
query = `UPDATE users SET exp = users.exp + ${Math.floor(
Math.random() * 25
)},msg_count = msg_count + 1 WHERE users.user_id = '${userID}'`;
await connect.query(query);
}
},
};