From f2371974cda68da6d11430f21f64bac370cff3dc Mon Sep 17 00:00:00 2001 From: Stanislaw <62724833+BoberITman@users.noreply.github.com> Date: Fri, 11 Mar 2022 21:16:45 +0100 Subject: [PATCH] Postgres is alive --- cfg.json | 186 ++++++++++++++-------------- index.js | 32 ++++- package-lock.json | 14 +++ package.json | 1 + {queres => queries}/badge_id.sql | 0 {queres => queries}/user_badges.sql | 0 src/functions/postgres.js | 22 +++- 7 files changed, 158 insertions(+), 97 deletions(-) rename {queres => queries}/badge_id.sql (100%) rename {queres => queries}/user_badges.sql (100%) diff --git a/cfg.json b/cfg.json index 8a8a09e..448b02d 100644 --- a/cfg.json +++ b/cfg.json @@ -1,95 +1,95 @@ { - "prefix": ".", - "hexBlue": "61f2ea", - "hexRed": "fb636b", - "iconurl": "https://i.imgur.com/4AmRDyX.png", - "timeout": 4000, - "rolesList": [ - "tf2", - "liga", - "csgo", - "minecraft", - "rainbow-six", - "apex", - "genshin", - "valorant" - ], - "embedFields": { - "witaj": [ - { - "name": "Zasady", - "value": "Zasady serwera są spisane na kanale `regulamin`. Pamiętajcie, by tam zajrzeć." - }, - { - "name": "Gractwo WWW", - "value": "http://gractwo.pl", - "inline": true - }, - { - "name": "Gractwo DISCORD", - "value": "http://gractwo.pl/discord", - "inline": true - }, - { - "name": "DISCORD bezpośredni", - "value": "discord.gg/NBXq95C", - "inline": true - }, - { - "name": "Gractwo TWITTER", - "value": "http://gractwo.pl/twitter", - "inline": true - }, - { - "name": "Gractwo YOUTUBE", - "value": "http://gractwo.pl/youtube", - "inline": true - }, - { - "name": "Gractwo GITHUB", - "value": "http://gractwo.pl/github", - "inline": true - } - ], - "regulamin": [ - { - "name": "§1 Szacunek", - "value": "Na naszym serwerze obowiązuje szacunek do innych osób podczas niesatyrycznej dyskusji." - }, - { - "name": "§2 Spam / Trolling", - "value": "Jeżeli będziesz bezużytecznie spamować lub nieprzyjmenie się zachowywać zostaniesz zbanowany." - }, - { - "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." - }, - { - "name": "§4 Poprawne Kanały", - "value": "Rozmowy na dany temat powinny toczyć się w kanałach do tego przeznaczonych." - }, - { - "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." - }, - { - "name": "§6 Reklamy", - "value": "Zakaz reklam bez zezwolenia moderatora lub administratora. Pozwolenia na reklamę muszą być wydane przed jej zamieszczeniem." - }, - { - "name": "§7 Przestrzeganie Regulaminu", - "value": "Przestrzeganie regulaminu jest obowiązkowe, a to że go ktoś nie przeczytał nic nie zmienia." - }, - { - "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." - }, - { - "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." - } - ], - "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." - } + "prefix": "&", + "hexBlue": "61f2ea", + "hexRed": "fb636b", + "iconurl": "https://i.imgur.com/4AmRDyX.png", + "timeout": 4000, + "rolesList": [ + "tf2", + "liga", + "csgo", + "minecraft", + "rainbow-six", + "apex", + "genshin", + "valorant" + ], + "embedFields": { + "witaj": [ + { + "name": "Zasady", + "value": "Zasady serwera są spisane na kanale `regulamin`. Pamiętajcie, by tam zajrzeć." + }, + { + "name": "Gractwo WWW", + "value": "http://gractwo.pl", + "inline": true + }, + { + "name": "Gractwo DISCORD", + "value": "http://gractwo.pl/discord", + "inline": true + }, + { + "name": "DISCORD bezpośredni", + "value": "discord.gg/NBXq95C", + "inline": true + }, + { + "name": "Gractwo TWITTER", + "value": "http://gractwo.pl/twitter", + "inline": true + }, + { + "name": "Gractwo YOUTUBE", + "value": "http://gractwo.pl/youtube", + "inline": true + }, + { + "name": "Gractwo GITHUB", + "value": "http://gractwo.pl/github", + "inline": true + } + ], + "regulamin": [ + { + "name": "§1 Szacunek", + "value": "Na naszym serwerze obowiązuje szacunek do innych osób podczas niesatyrycznej dyskusji." + }, + { + "name": "§2 Spam / Trolling", + "value": "Jeżeli będziesz bezużytecznie spamować lub nieprzyjmenie się zachowywać zostaniesz zbanowany." + }, + { + "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." + }, + { + "name": "§4 Poprawne Kanały", + "value": "Rozmowy na dany temat powinny toczyć się w kanałach do tego przeznaczonych." + }, + { + "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." + }, + { + "name": "§6 Reklamy", + "value": "Zakaz reklam bez zezwolenia moderatora lub administratora. Pozwolenia na reklamę muszą być wydane przed jej zamieszczeniem." + }, + { + "name": "§7 Przestrzeganie Regulaminu", + "value": "Przestrzeganie regulaminu jest obowiązkowe, a to że go ktoś nie przeczytał nic nie zmienia." + }, + { + "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." + }, + { + "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." + } + ], + "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." + } } diff --git a/index.js b/index.js index 597e986..1ec20e8 100644 --- a/index.js +++ b/index.js @@ -1,8 +1,19 @@ const discordjs = require("discord.js"); const fs = require("fs"); const redis = require("./src/functions/redis"); +const sql = require("./src/functions/postgres"); 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(); const cl = new discordjs.Client({ @@ -13,10 +24,22 @@ const cl = new discordjs.Client({ ], }); +//redis connect const redisConnection = createClient({ 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.cmds = new discordjs.Collection(); @@ -33,6 +56,9 @@ cl.on("messageCreate", async (msg) => { if (msg.author.bot) return; if (!msg.content.startsWith(cl.cfg.prefix)) { 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(/ +/); @@ -57,7 +83,7 @@ cl.on("messageCreate", async (msg) => { }); 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.login(process.env.TOKEN); // here comes the boooy diff --git a/package-lock.json b/package-lock.json index cf06696..52a95db 100644 --- a/package-lock.json +++ b/package-lock.json @@ -11,6 +11,7 @@ "dependencies": { "@discordjs/opus": "^0.5.3", "@discordjs/voice": "^0.7.5", + "colors": "^1.4.0", "daemon": "^1.1.0", "discord.js": "^13.1.0", "dotenv": "^10.0.0", @@ -637,6 +638,14 @@ "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": { "version": "1.0.8", "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", "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": { "version": "1.0.8", "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", diff --git a/package.json b/package.json index a59b3e0..604f655 100644 --- a/package.json +++ b/package.json @@ -23,6 +23,7 @@ "dependencies": { "@discordjs/opus": "^0.5.3", "@discordjs/voice": "^0.7.5", + "colors": "^1.4.0", "daemon": "^1.1.0", "discord.js": "^13.1.0", "dotenv": "^10.0.0", diff --git a/queres/badge_id.sql b/queries/badge_id.sql similarity index 100% rename from queres/badge_id.sql rename to queries/badge_id.sql diff --git a/queres/user_badges.sql b/queries/user_badges.sql similarity index 100% rename from queres/user_badges.sql rename to queries/user_badges.sql diff --git a/src/functions/postgres.js b/src/functions/postgres.js index f053ebf..44f606d 100644 --- a/src/functions/postgres.js +++ b/src/functions/postgres.js @@ -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); + } + }, +};