add workflows

This commit is contained in:
Stanislaw
2022-06-15 22:28:18 +02:00
parent ffc034dbdd
commit 089e13b9ff
8 changed files with 102 additions and 43 deletions

19
.github/workflows/deploy.yaml vendored Normal file
View File

@@ -0,0 +1,19 @@
name: Deploy
on:
push:
branches: ["canary"]
workflow_dispatch:
jobs:
build:
runs-on: self-hosted
steps:
- uses: actions/checkout@v3
- name: Build image
run: docker build -t ${{ github.repository }} .
- name: Deploy image
run: |
docker stop ${{ github.event.repository.name }} || true
docker rm ${{ github.event.repository.name }} || true
docker run -d -e "DISCORD_TOKEN=${{ secrets.DISCORD_TOKEN }}" -e "DATABASE_URL=${{ secrets.DATABASE_URL }}" --restart always --name ${{ github.event.repository.name }} ${{ github.repository }}

3
.gitignore vendored
View File

@@ -1,5 +1,4 @@
/node_modules /node_modules
.env .env
package-lock.json package-lock.json
/src/badges /src/badges
/prisma

View File

@@ -54,12 +54,12 @@ cl.on("messageCreate", async (msg) => {
//exp //exp
if (!msg.content.startsWith(cl.cfg.prefix)) { if (!msg.content.startsWith(cl.cfg.prefix)) {
client.messageCount(msg.author.id); client.messageCount(msg.author.id, msg.channel.id);
if (await redis.expCheck(msg.author.id, redisConnection)) { if (await redis.expCheck(msg.author.id, redisConnection)) {
client.addExp(msg.author.id, 10, 25); client.addExp(msg.author.id, 10, 25);
} }
} else { } else {
client.messageCount(msg.author.id); //client.messageCount(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(/ +/);

56
package-lock.json generated
View File

@@ -15,8 +15,8 @@
"daemon": "^1.1.0", "daemon": "^1.1.0",
"discord.js": "^13.6.0", "discord.js": "^13.6.0",
"dotenv": "^10.0.0", "dotenv": "^10.0.0",
"nodemon": "^2.0.15", "nodemon": "^2.0.16",
"prisma": "^3.12.0", "prisma": "^3.13.0",
"redis": "^4.0.4" "redis": "^4.0.4"
}, },
"engines": { "engines": {
@@ -187,9 +187,9 @@
} }
}, },
"node_modules/@prisma/engines": { "node_modules/@prisma/engines": {
"version": "3.12.0-37.22b822189f46ef0dc5c5b503368d1bee01213980", "version": "3.13.0-17.efdf9b1183dddfd4258cd181a72125755215ab7b",
"resolved": "https://registry.npmjs.org/@prisma/engines/-/engines-3.12.0-37.22b822189f46ef0dc5c5b503368d1bee01213980.tgz", "resolved": "https://registry.npmjs.org/@prisma/engines/-/engines-3.13.0-17.efdf9b1183dddfd4258cd181a72125755215ab7b.tgz",
"integrity": "sha512-zULjkN8yhzS7B3yeEz4aIym4E2w1ChrV12i14pht3ePFufvsAvBSoZ+tuXMvfSoNTgBS5E4bolRzLbMmbwkkMQ==", "integrity": "sha512-Ip9CcCeUocH61eXu4BUGpvl5KleQyhcUVLpWCv+0ZmDv44bFaDpREqjGHHdRupvPN/ugB6gTlD9b9ewdj02yVA==",
"hasInstallScript": true "hasInstallScript": true
}, },
"node_modules/@prisma/engines-version": { "node_modules/@prisma/engines-version": {
@@ -1355,9 +1355,9 @@
} }
}, },
"node_modules/nodemon": { "node_modules/nodemon": {
"version": "2.0.15", "version": "2.0.16",
"resolved": "https://registry.npmjs.org/nodemon/-/nodemon-2.0.15.tgz", "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-2.0.16.tgz",
"integrity": "sha512-gdHMNx47Gw7b3kWxJV64NI+Q5nfl0y5DgDbiVtShiwa7Z0IZ07Ll4RLFo6AjrhzMtoEZn5PDE3/c2AbVsiCkpA==", "integrity": "sha512-zsrcaOfTWRuUzBn3P44RDliLlp263Z/76FPoHFr3cFFkOz0lTPAcIw8dCzfdVIx/t3AtDYCZRCDkoCojJqaG3w==",
"hasInstallScript": true, "hasInstallScript": true,
"dependencies": { "dependencies": {
"chokidar": "^3.5.2", "chokidar": "^3.5.2",
@@ -1497,12 +1497,13 @@
} }
}, },
"node_modules/prisma": { "node_modules/prisma": {
"version": "3.12.0", "version": "3.13.0",
"resolved": "https://registry.npmjs.org/prisma/-/prisma-3.12.0.tgz", "resolved": "https://registry.npmjs.org/prisma/-/prisma-3.13.0.tgz",
"integrity": "sha512-ltCMZAx1i0i9xuPM692Srj8McC665h6E5RqJom999sjtVSccHSD8Z+HSdBN2183h9PJKvC5dapkn78dd0NWMBg==", "integrity": "sha512-oO1auBnBtieGdiN+57IgsA9Vr7Sy4HkILi1KSaUG4mpKfEbnkTGnLOxAqjLed+K2nsG/GtE1tJBtB7JxN1a78Q==",
"hasInstallScript": true, "hasInstallScript": true,
"dependencies": { "dependencies": {
"@prisma/engines": "3.12.0-37.22b822189f46ef0dc5c5b503368d1bee01213980" "@prisma/engines": "3.13.0-17.efdf9b1183dddfd4258cd181a72125755215ab7b",
"ts-pattern": "^4.0.1"
}, },
"bin": { "bin": {
"prisma": "build/index.js", "prisma": "build/index.js",
@@ -1843,6 +1844,11 @@
"resolved": "https://registry.npmjs.org/ts-mixer/-/ts-mixer-6.0.1.tgz", "resolved": "https://registry.npmjs.org/ts-mixer/-/ts-mixer-6.0.1.tgz",
"integrity": "sha512-hvE+ZYXuINrx6Ei6D6hz+PTim0Uf++dYbK9FFifLNwQj+RwKquhQpn868yZsCtJYiclZF1u8l6WZxxKi+vv7Rg==" "integrity": "sha512-hvE+ZYXuINrx6Ei6D6hz+PTim0Uf++dYbK9FFifLNwQj+RwKquhQpn868yZsCtJYiclZF1u8l6WZxxKi+vv7Rg=="
}, },
"node_modules/ts-pattern": {
"version": "4.0.2",
"resolved": "https://registry.npmjs.org/ts-pattern/-/ts-pattern-4.0.2.tgz",
"integrity": "sha512-eHqR/7A6fcw05vCOfnL6RwgGJbVi9G/YHTdYdjYmElhDdJ1SMn7pWs+6+YuxygaFwQS/g+cIDlu+UD8IVpur1A=="
},
"node_modules/tslib": { "node_modules/tslib": {
"version": "2.3.1", "version": "2.3.1",
"resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz",
@@ -2150,9 +2156,9 @@
} }
}, },
"@prisma/engines": { "@prisma/engines": {
"version": "3.12.0-37.22b822189f46ef0dc5c5b503368d1bee01213980", "version": "3.13.0-17.efdf9b1183dddfd4258cd181a72125755215ab7b",
"resolved": "https://registry.npmjs.org/@prisma/engines/-/engines-3.12.0-37.22b822189f46ef0dc5c5b503368d1bee01213980.tgz", "resolved": "https://registry.npmjs.org/@prisma/engines/-/engines-3.13.0-17.efdf9b1183dddfd4258cd181a72125755215ab7b.tgz",
"integrity": "sha512-zULjkN8yhzS7B3yeEz4aIym4E2w1ChrV12i14pht3ePFufvsAvBSoZ+tuXMvfSoNTgBS5E4bolRzLbMmbwkkMQ==" "integrity": "sha512-Ip9CcCeUocH61eXu4BUGpvl5KleQyhcUVLpWCv+0ZmDv44bFaDpREqjGHHdRupvPN/ugB6gTlD9b9ewdj02yVA=="
}, },
"@prisma/engines-version": { "@prisma/engines-version": {
"version": "3.12.0-37.22b822189f46ef0dc5c5b503368d1bee01213980", "version": "3.12.0-37.22b822189f46ef0dc5c5b503368d1bee01213980",
@@ -3016,9 +3022,9 @@
} }
}, },
"nodemon": { "nodemon": {
"version": "2.0.15", "version": "2.0.16",
"resolved": "https://registry.npmjs.org/nodemon/-/nodemon-2.0.15.tgz", "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-2.0.16.tgz",
"integrity": "sha512-gdHMNx47Gw7b3kWxJV64NI+Q5nfl0y5DgDbiVtShiwa7Z0IZ07Ll4RLFo6AjrhzMtoEZn5PDE3/c2AbVsiCkpA==", "integrity": "sha512-zsrcaOfTWRuUzBn3P44RDliLlp263Z/76FPoHFr3cFFkOz0lTPAcIw8dCzfdVIx/t3AtDYCZRCDkoCojJqaG3w==",
"requires": { "requires": {
"chokidar": "^3.5.2", "chokidar": "^3.5.2",
"debug": "^3.2.7", "debug": "^3.2.7",
@@ -3113,11 +3119,12 @@
"integrity": "sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc=" "integrity": "sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc="
}, },
"prisma": { "prisma": {
"version": "3.12.0", "version": "3.13.0",
"resolved": "https://registry.npmjs.org/prisma/-/prisma-3.12.0.tgz", "resolved": "https://registry.npmjs.org/prisma/-/prisma-3.13.0.tgz",
"integrity": "sha512-ltCMZAx1i0i9xuPM692Srj8McC665h6E5RqJom999sjtVSccHSD8Z+HSdBN2183h9PJKvC5dapkn78dd0NWMBg==", "integrity": "sha512-oO1auBnBtieGdiN+57IgsA9Vr7Sy4HkILi1KSaUG4mpKfEbnkTGnLOxAqjLed+K2nsG/GtE1tJBtB7JxN1a78Q==",
"requires": { "requires": {
"@prisma/engines": "3.12.0-37.22b822189f46ef0dc5c5b503368d1bee01213980" "@prisma/engines": "3.13.0-17.efdf9b1183dddfd4258cd181a72125755215ab7b",
"ts-pattern": "^4.0.1"
} }
}, },
"pstree.remy": { "pstree.remy": {
@@ -3374,6 +3381,11 @@
"resolved": "https://registry.npmjs.org/ts-mixer/-/ts-mixer-6.0.1.tgz", "resolved": "https://registry.npmjs.org/ts-mixer/-/ts-mixer-6.0.1.tgz",
"integrity": "sha512-hvE+ZYXuINrx6Ei6D6hz+PTim0Uf++dYbK9FFifLNwQj+RwKquhQpn868yZsCtJYiclZF1u8l6WZxxKi+vv7Rg==" "integrity": "sha512-hvE+ZYXuINrx6Ei6D6hz+PTim0Uf++dYbK9FFifLNwQj+RwKquhQpn868yZsCtJYiclZF1u8l6WZxxKi+vv7Rg=="
}, },
"ts-pattern": {
"version": "4.0.2",
"resolved": "https://registry.npmjs.org/ts-pattern/-/ts-pattern-4.0.2.tgz",
"integrity": "sha512-eHqR/7A6fcw05vCOfnL6RwgGJbVi9G/YHTdYdjYmElhDdJ1SMn7pWs+6+YuxygaFwQS/g+cIDlu+UD8IVpur1A=="
},
"tslib": { "tslib": {
"version": "2.3.1", "version": "2.3.1",
"resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz",

View File

@@ -27,8 +27,8 @@
"daemon": "^1.1.0", "daemon": "^1.1.0",
"discord.js": "^13.6.0", "discord.js": "^13.6.0",
"dotenv": "^10.0.0", "dotenv": "^10.0.0",
"nodemon": "^2.0.15", "nodemon": "^2.0.16",
"prisma": "^3.12.0", "prisma": "^3.13.0",
"redis": "^4.0.4" "redis": "^4.0.4"
} }
} }

View File

@@ -11,6 +11,7 @@ model badges {
badge_id Int @id badge_id Int @id
badge_name String badge_name String
badge_description String badge_description String
badge_visibility Boolean @default(true)
badge_type Int @default(0) badge_type Int @default(0)
givenbadges givenbadges[] givenbadges givenbadges[]
} }
@@ -27,10 +28,20 @@ model givenbadges {
} }
model users { model users {
user_id String @id(map: "user_pkey") user_id String @id(map: "user_pkey")
exp Int @default(0) exp Int @default(0)
msg_count Int @default(0) voice_time Int @default(0)
voice_time Int @default(0) lvl Int @default(0)
lvl Int @default(0) givenbadges givenbadges[]
givenbadges givenbadges[] sendmessages sendmessages[]
}
model sendmessages {
id Int @id @default(autoincrement())
user_id String
date DateTime @db.Date
channel String
msg_count Int
users users @relation(fields: [user_id], references: [user_id], onDelete: NoAction, onUpdate: NoAction, map: "user_id")
} }

View File

@@ -1,5 +1,3 @@
const { ReactionUserManager } = require("discord.js");
module.exports = { module.exports = {
name: "profile", name: "profile",
async execute(cl, msg, args, connect) { async execute(cl, msg, args, connect) {

View File

@@ -26,17 +26,22 @@ class Postgres {
}); });
} }
async msg_state(userID) {
return await this.client.users.findUnique({
where: {
user_id: userID,
},
});
}
async addExp(userID, min, max) { async addExp(userID, min, max) {
await this.#ifExist(userID).then(async () => { await this.#ifUserExist(userID).then(async () => {
const rExp = randomExp(min, max); const rExp = randomExp(min, max);
return await this.client.users.update({ return await this.client.users.update({
where: { where: {
user_id: userID, user_id: userID,
}, },
data: { data: {
msg_count: {
increment: 1,
},
exp: { exp: {
increment: rExp, increment: rExp,
}, },
@@ -56,13 +61,28 @@ class Postgres {
}); });
}); });
} }
async #ifExist(userID) {
if ((await !this.profile(userID)) == null) { async #ifUserExist(userID) {
if ((await this.profile(userID)) == null) {
console.log("Account");
await this.client.users.create({ await this.client.users.create({
data: { data: {
user_id: userID, user_id: userID,
msg_count: 0,
lvl: 0, lvl: 0,
exp: 0,
},
});
}
}
async #ifMsgsExist(userID, channelID) {
if ((await this.profile(userID)) == null) {
console.log("Account");
await this.client.users.create({
data: {
user_id: userID,
lvl: 0,
exp: 0,
}, },
}); });
} }