Compare commits
88 Commits
Author | SHA1 | Date | |
---|---|---|---|
eeda0405f3 | |||
0e2b7d03fc | |||
c7f5ab0161 | |||
01e8e4256d | |||
75adc2285e | |||
9e12d84ba0 | |||
d3b503d3ef | |||
dd86c3a657 | |||
aba6e48e2b | |||
73848c3141 | |||
33d6015088 | |||
7e962e05f6 | |||
c73c6876b2 | |||
8e949c3e1a | |||
472a76d563 | |||
f5d88ec94c | |||
2182c021b9 | |||
a9c9880fd4 | |||
d91c76467d | |||
2f10ace27f | |||
3b79a61bb6 | |||
ef0fab1178 | |||
189b6370a9 | |||
0ed93c56d0 | |||
4d18dd3845 | |||
7b7cbb20db | |||
84c2f5c2c4 | |||
c85c6df784 | |||
d5d898fa07 | |||
ef5ebabf81 | |||
f89b4c4ef5 | |||
8b277a2d19 | |||
a84e77e055 | |||
892c983e1e | |||
1d3809c986 | |||
3117f617d9 | |||
7e6053768f | |||
3d9cd0a2fc | |||
8d90768594 | |||
7e8a9482d4 | |||
bf7d29e6ab | |||
608001e0e1 | |||
0dd9558f33 | |||
7acd850e68 | |||
ecd3ea96b1 | |||
d869bcfd3a | |||
818e021761 | |||
b286322247 | |||
661b057e85 | |||
9be4e344f6 | |||
ebc782e266 | |||
887a46fa7f | |||
0cc8d6f2c7 | |||
3546d38f75 | |||
376cb76036 | |||
8e8da46a54 | |||
94e003312d | |||
fe42d46a38 | |||
4c0a4bc1ae | |||
4161d3a38a | |||
4a763e4e03 | |||
9783424066 | |||
290b5f38a7 | |||
5bfd04722c | |||
12f956f4c3 | |||
0b767fcb68 | |||
a303108da2 | |||
5e9cca5b1d | |||
d1c79c95b2 | |||
378d2c3dc9 | |||
a8ea9f5e49 | |||
957a54ccf3 | |||
0037a30c11 | |||
77e079d91c | |||
25137c6923 | |||
0a0401dd87 | |||
74f3ee2f08 | |||
69fc75fc97 | |||
5a85232374 | |||
5892b209d3 | |||
6715ecacd6 | |||
d72715d51b | |||
a7f9fa5818 | |||
c45916aaee | |||
8bbd57e82f | |||
987a1a664b | |||
99bfa9874a | |||
2e0c1babe4 |
17
.gitea/issue_template.md
Normal file
17
.gitea/issue_template.md
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
#### Beschreibung
|
||||||
|
|
||||||
|
Als Produktmanager muss ich nun dieses Ticket ausfüllen.
|
||||||
|
|
||||||
|
#### Aktuelles Verhalten
|
||||||
|
|
||||||
|
* Was macht die Software aktuell?
|
||||||
|
|
||||||
|
#### Gewünschtes Verhalten
|
||||||
|
|
||||||
|
* Was soll die Software anders machen?
|
||||||
|
|
||||||
|
#### Akzeptanzkriterien
|
||||||
|
|
||||||
|
* Was muss erfüllt sein, damit das Ticket als abgeschlossen angesehen werden kann?
|
||||||
|
|
||||||
|
#### Anmerkungen
|
7
.gitea/pull_request_template.md
Normal file
7
.gitea/pull_request_template.md
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
#### Ticket Referenz:
|
||||||
|
|
||||||
|
#1
|
||||||
|
|
||||||
|
#### Gibt es etwas beim Review zu beachten?
|
||||||
|
|
||||||
|
Nein
|
65
.gitea/workflows/deploy_dev.yaml
Normal file
65
.gitea/workflows/deploy_dev.yaml
Normal file
@@ -0,0 +1,65 @@
|
|||||||
|
name: Deploy dev on push
|
||||||
|
run-name: Deploy dev on push
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- dev
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
on-push-deploy_sh-edraft:
|
||||||
|
runs-on: [ dobby.sh-edraft.de, ubuntu-latest ]
|
||||||
|
container: catthehacker/ubuntu:act-latest
|
||||||
|
steps:
|
||||||
|
- name: Setup Python 3.10
|
||||||
|
uses: actions/setup-python@v3
|
||||||
|
with:
|
||||||
|
python-version: "3.10.12"
|
||||||
|
- run: python -v
|
||||||
|
|
||||||
|
- name: Setup docker
|
||||||
|
uses: https://github.com/papodaca/install-docker-action@main
|
||||||
|
- run: docker -v
|
||||||
|
|
||||||
|
- name: Clone Repository
|
||||||
|
uses: https://github.com/actions/checkout@v3
|
||||||
|
|
||||||
|
- name: Shutdown stack
|
||||||
|
run: docker stack rm kdb_staging
|
||||||
|
|
||||||
|
- name: Prepare bot build
|
||||||
|
run: |
|
||||||
|
cd kdb-bot
|
||||||
|
pip install --extra-index-url https://pip.sh-edraft.de cpl-cli
|
||||||
|
cpl i
|
||||||
|
|
||||||
|
- name: Build docker bot
|
||||||
|
run: |
|
||||||
|
cd kdb-bot
|
||||||
|
docker image prune -f
|
||||||
|
cpl docker-build
|
||||||
|
|
||||||
|
- name: Setup node
|
||||||
|
uses: https://github.com/actions/setup-node@v3
|
||||||
|
|
||||||
|
- name: Prepare web build
|
||||||
|
run: |
|
||||||
|
cd kdb-web
|
||||||
|
npm install -g ts-node
|
||||||
|
npm i
|
||||||
|
|
||||||
|
- name: Build docker web
|
||||||
|
run: |
|
||||||
|
cd kdb-web
|
||||||
|
docker image prune -f
|
||||||
|
npm run docker-build
|
||||||
|
|
||||||
|
- name: Deploy Stack to sh-edraft.de
|
||||||
|
uses: https://github.com/kgierke/portainer-stack-deployment@v1
|
||||||
|
with:
|
||||||
|
portainer-url: "https://docker.sh-edraft.de"
|
||||||
|
portainer-username: "gitea_job"
|
||||||
|
portainer-password: "${{ secrets.docker_job }}"
|
||||||
|
portainer-endpoint: 2
|
||||||
|
name: kdb_staging
|
||||||
|
file: ./docker-compose.staging.yml
|
||||||
|
variables: '{}'
|
65
.gitea/workflows/deploy_prod.yaml
Normal file
65
.gitea/workflows/deploy_prod.yaml
Normal file
@@ -0,0 +1,65 @@
|
|||||||
|
name: Deploy dev on push
|
||||||
|
run-name: Deploy dev on push
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- master
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
on-push-deploy_sh-edraft:
|
||||||
|
runs-on: [ dobby.sh-edraft.de, ubuntu-latest ]
|
||||||
|
container: catthehacker/ubuntu:act-latest
|
||||||
|
steps:
|
||||||
|
- name: Setup Python 3.10
|
||||||
|
uses: actions/setup-python@v3
|
||||||
|
with:
|
||||||
|
python-version: "3.10.12"
|
||||||
|
- run: python -v
|
||||||
|
|
||||||
|
- name: Setup docker
|
||||||
|
uses: https://github.com/papodaca/install-docker-action@main
|
||||||
|
- run: docker -v
|
||||||
|
|
||||||
|
- name: Clone Repository
|
||||||
|
uses: https://github.com/actions/checkout@v3
|
||||||
|
|
||||||
|
- name: Shutdown stack
|
||||||
|
run: docker stack rm kdb_prod
|
||||||
|
|
||||||
|
- name: Prepare bot build
|
||||||
|
run: |
|
||||||
|
cd kdb-bot
|
||||||
|
pip install --extra-index-url https://pip.sh-edraft.de cpl-cli
|
||||||
|
cpl i
|
||||||
|
|
||||||
|
- name: Build docker bot
|
||||||
|
run: |
|
||||||
|
cd kdb-bot
|
||||||
|
docker image prune -f
|
||||||
|
cpl docker-build
|
||||||
|
|
||||||
|
- name: Setup node
|
||||||
|
uses: https://github.com/actions/setup-node@v3
|
||||||
|
|
||||||
|
- name: Prepare web build
|
||||||
|
run: |
|
||||||
|
cd kdb-web
|
||||||
|
npm install -g ts-node
|
||||||
|
npm i
|
||||||
|
|
||||||
|
- name: Build docker web
|
||||||
|
run: |
|
||||||
|
cd kdb-web
|
||||||
|
docker image prune -f
|
||||||
|
npm run docker-build
|
||||||
|
|
||||||
|
- name: Deploy Stack to sh-edraft.de
|
||||||
|
uses: https://github.com/kgierke/portainer-stack-deployment@v1
|
||||||
|
with:
|
||||||
|
portainer-url: "https://docker.sh-edraft.de"
|
||||||
|
portainer-username: "gitea_job"
|
||||||
|
portainer-password: "${{ secrets.docker_job }}"
|
||||||
|
portainer-endpoint: 2
|
||||||
|
name: kdb_prod
|
||||||
|
file: ./docker-compose.yml
|
||||||
|
variables: '{}'
|
87
docker-compose.staging.yml
Normal file
87
docker-compose.staging.yml
Normal file
@@ -0,0 +1,87 @@
|
|||||||
|
version: "3.9"
|
||||||
|
|
||||||
|
volumes:
|
||||||
|
kdb_db_staging_1:
|
||||||
|
|
||||||
|
services:
|
||||||
|
kdb_bot_staging_1:
|
||||||
|
image: sh-edraft.de/kdb-bot:1.1.10
|
||||||
|
restart: unless-stopped
|
||||||
|
depends_on:
|
||||||
|
- kdb_db_staging_1
|
||||||
|
networks:
|
||||||
|
- kdb_test
|
||||||
|
- reverse_proxy
|
||||||
|
volumes:
|
||||||
|
- /opt/kdb/staging/bot/config:/app/bot/config
|
||||||
|
- /opt/kdb/staging/bot/api_config:/app/bot_api/config
|
||||||
|
- /opt/kdb/staging/bot/logs:/app/bot/logs
|
||||||
|
environment:
|
||||||
|
KDB_ENVIRONMENT: "staging"
|
||||||
|
KDB_TOKEN: "OTk4MTU5ODAyMzkzOTY0NTk0.G-csct.b2Y-HxvLz0SfFLl5HpukROv2GaiWhcMABbMzYE"
|
||||||
|
KDB_PREFIX: "!kt "
|
||||||
|
command: bash /app/bot/bot -stage
|
||||||
|
deploy:
|
||||||
|
mode: replicated
|
||||||
|
replicas: 1
|
||||||
|
placement:
|
||||||
|
constraints: [node.role == manager]
|
||||||
|
resources:
|
||||||
|
reservations:
|
||||||
|
cpus: "0.5"
|
||||||
|
memory: 1024M
|
||||||
|
|
||||||
|
kdb_web_staging_1:
|
||||||
|
image: sh-edraft.de/kdb-web:1.1.10
|
||||||
|
depends_on:
|
||||||
|
- kdb_bot_staging_1
|
||||||
|
networks:
|
||||||
|
- kdb_test
|
||||||
|
- reverse_proxy
|
||||||
|
volumes:
|
||||||
|
- /opt/kdb/staging/web/config.json:/usr/share/nginx/html/assets/config.json
|
||||||
|
environment:
|
||||||
|
BOT_CONTAINER_NAME: "kdb_bot_staging_1"
|
||||||
|
deploy:
|
||||||
|
mode: replicated
|
||||||
|
replicas: 1
|
||||||
|
placement:
|
||||||
|
constraints: [node.role == manager]
|
||||||
|
resources:
|
||||||
|
limits:
|
||||||
|
cpus: "0.4"
|
||||||
|
memory: 400M
|
||||||
|
reservations:
|
||||||
|
cpus: "0.1"
|
||||||
|
memory: 20M
|
||||||
|
|
||||||
|
kdb_db_staging_1:
|
||||||
|
image: mysql:latest
|
||||||
|
command: mysqld --default-authentication-plugin=mysql_native_password --log_bin_trust_function_creators=1
|
||||||
|
networks:
|
||||||
|
- kdb_test
|
||||||
|
environment:
|
||||||
|
MYSQL_ROOT_PASSWORD: "kd_kdb"
|
||||||
|
MYSQL_USER: "kd_kdb"
|
||||||
|
MYSQL_PASSWORD: "~qELxjvtjJ3r7yg4PZr5!,V}d.{TC4rg"
|
||||||
|
MYSQL_DATABASE: "kd_kdb"
|
||||||
|
ports:
|
||||||
|
- "3308:3306"
|
||||||
|
volumes:
|
||||||
|
- kdb_db_staging_1:/var/lib/mysql
|
||||||
|
deploy:
|
||||||
|
mode: replicated
|
||||||
|
replicas: 1
|
||||||
|
placement:
|
||||||
|
constraints: [node.role == manager]
|
||||||
|
resources:
|
||||||
|
reservations:
|
||||||
|
cpus: "0.1"
|
||||||
|
memory: 150M
|
||||||
|
|
||||||
|
networks:
|
||||||
|
reverse_proxy:
|
||||||
|
external: true
|
||||||
|
kdb_test:
|
||||||
|
driver: overlay
|
||||||
|
attachable: true
|
87
docker-compose.yml
Normal file
87
docker-compose.yml
Normal file
@@ -0,0 +1,87 @@
|
|||||||
|
version: "3.9"
|
||||||
|
|
||||||
|
volumes:
|
||||||
|
kdb_db_prod_1:
|
||||||
|
|
||||||
|
services:
|
||||||
|
kdb_bot_prod_1:
|
||||||
|
image: sh-edraft.de/kdb-bot:1.1.10
|
||||||
|
restart: unless-stopped
|
||||||
|
depends_on:
|
||||||
|
- kdb_db_prod_1
|
||||||
|
networks:
|
||||||
|
- kdb_prod
|
||||||
|
- reverse_proxy
|
||||||
|
volumes:
|
||||||
|
- /opt/kdb/production/bot/config:/app/bot/config
|
||||||
|
- /opt/kdb/production/bot/api_config:/app/bot_api/config
|
||||||
|
- /opt/kdb/production/bot/logs:/app/bot/logs
|
||||||
|
environment:
|
||||||
|
KDB_ENVIRONMENT: "production"
|
||||||
|
KDB_TOKEN: "OTk4MTU5NTEyNDYyNzA4Nzg2.Gx0hSB.Ouq2dfRKxLBJvHfEq8OrFBHVUF24AQrVf55coM"
|
||||||
|
KDB_PREFIX: "!k "
|
||||||
|
deploy:
|
||||||
|
mode: replicated
|
||||||
|
replicas: 1
|
||||||
|
placement:
|
||||||
|
constraints: [node.role == manager]
|
||||||
|
resources:
|
||||||
|
reservations:
|
||||||
|
cpus: "0.5"
|
||||||
|
memory: 1024M
|
||||||
|
|
||||||
|
kdb_web_prod_1:
|
||||||
|
image: sh-edraft.de/kdb-web:1.1.10
|
||||||
|
depends_on:
|
||||||
|
- kdb_bot_prod_1
|
||||||
|
networks:
|
||||||
|
- kdb_prod
|
||||||
|
- reverse_proxy
|
||||||
|
volumes:
|
||||||
|
- /opt/kdb/production/web/config.json:/usr/share/nginx/html/assets/config.json
|
||||||
|
environment:
|
||||||
|
BOT_CONTAINER_NAME: "kdb_bot_prod_1"
|
||||||
|
deploy:
|
||||||
|
mode: replicated
|
||||||
|
replicas: 1
|
||||||
|
placement:
|
||||||
|
constraints: [node.role == manager]
|
||||||
|
resources:
|
||||||
|
limits:
|
||||||
|
cpus: "0.4"
|
||||||
|
memory: 400M
|
||||||
|
reservations:
|
||||||
|
cpus: "0.1"
|
||||||
|
memory: 20M
|
||||||
|
|
||||||
|
kdb_db_prod_1:
|
||||||
|
image: mysql:latest
|
||||||
|
command: mysqld --default-authentication-plugin=mysql_native_password --log_bin_trust_function_creators=1
|
||||||
|
networks:
|
||||||
|
- kdb_prod
|
||||||
|
restart: unless-stopped
|
||||||
|
environment:
|
||||||
|
MYSQL_ROOT_PASSWORD: "kd_kdb"
|
||||||
|
MYSQL_USER: "kd_kdb"
|
||||||
|
MYSQL_PASSWORD: ",2#MzfN4J=7r(q,Tz3npDkCR§>VE&}7T"
|
||||||
|
MYSQL_DATABASE: "kd_kdb"
|
||||||
|
ports:
|
||||||
|
- "3307:3306"
|
||||||
|
volumes:
|
||||||
|
- kdb_db_prod_1:/var/lib/mysql
|
||||||
|
deploy:
|
||||||
|
mode: replicated
|
||||||
|
replicas: 1
|
||||||
|
placement:
|
||||||
|
constraints: [node.role == manager]
|
||||||
|
resources:
|
||||||
|
reservations:
|
||||||
|
cpus: "0.1"
|
||||||
|
memory: 150M
|
||||||
|
|
||||||
|
networks:
|
||||||
|
reverse_proxy:
|
||||||
|
external: true
|
||||||
|
kdb_prod:
|
||||||
|
driver: overlay
|
||||||
|
attachable: true
|
@@ -16,6 +16,7 @@
|
|||||||
"level": "src/modules/level/level.json",
|
"level": "src/modules/level/level.json",
|
||||||
"permission": "src/modules/permission/permission.json",
|
"permission": "src/modules/permission/permission.json",
|
||||||
"technician": "src/modules/technician/technician.json",
|
"technician": "src/modules/technician/technician.json",
|
||||||
|
"short-role-name": "src/modules/short_role_name/short-role-name.json",
|
||||||
"checks": "tools/checks/checks.json",
|
"checks": "tools/checks/checks.json",
|
||||||
"get-version": "tools/get_version/get-version.json",
|
"get-version": "tools/get_version/get-version.json",
|
||||||
"post-build": "tools/post_build/post-build.json",
|
"post-build": "tools/post_build/post-build.json",
|
||||||
@@ -35,7 +36,7 @@
|
|||||||
"stage": "export KDB_ENVIRONMENT=staging; export KDB_NAME=KDB-Stage; cpl start;",
|
"stage": "export KDB_ENVIRONMENT=staging; export KDB_NAME=KDB-Stage; cpl start;",
|
||||||
"pre-dev": "cpl build",
|
"pre-dev": "cpl build",
|
||||||
"dev": "export KDB_ENVIRONMENT=development; export KDB_NAME=KDB-Dev; cpl start;",
|
"dev": "export KDB_ENVIRONMENT=development; export KDB_NAME=KDB-Dev; cpl start;",
|
||||||
"docker-build": "cpl build $ARGS; docker build -t kdb-bot/kdb-bot:$(cpl gv) .;",
|
"docker-build": "cpl build $ARGS; docker build -t sh-edraft.de/kdb-bot:$(cpl gv) .;",
|
||||||
"dc-up": "docker-compose up -d",
|
"dc-up": "docker-compose up -d",
|
||||||
"dc-down": "docker-compose down",
|
"dc-down": "docker-compose down",
|
||||||
"docker": "cpl dc-down; cpl docker-build; cpl dc-up;"
|
"docker": "cpl dc-down; cpl docker-build; cpl dc-up;"
|
||||||
|
@@ -1,10 +1,10 @@
|
|||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
"""
|
"""
|
||||||
bot Keksdose bot
|
bot sh-edraft.de Discord bot
|
||||||
~~~~~~~~~~~~~~~~~~~
|
~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
Discord bot for the Keksdose discord Server
|
Discord bot for customers of sh-edraft.de
|
||||||
|
|
||||||
:copyright: (c) 2022 - 2023 sh-edraft.de
|
:copyright: (c) 2022 - 2023 sh-edraft.de
|
||||||
:license: MIT, see LICENSE for more details.
|
:license: MIT, see LICENSE for more details.
|
||||||
@@ -15,7 +15,7 @@ __title__ = "bot"
|
|||||||
__author__ = "Sven Heidemann"
|
__author__ = "Sven Heidemann"
|
||||||
__license__ = "MIT"
|
__license__ = "MIT"
|
||||||
__copyright__ = "Copyright (c) 2022 - 2023 sh-edraft.de"
|
__copyright__ = "Copyright (c) 2022 - 2023 sh-edraft.de"
|
||||||
__version__ = "1.1.6"
|
__version__ = "1.1.10"
|
||||||
|
|
||||||
from collections import namedtuple
|
from collections import namedtuple
|
||||||
|
|
||||||
@@ -23,4 +23,4 @@ from collections import namedtuple
|
|||||||
# imports:
|
# imports:
|
||||||
|
|
||||||
VersionInfo = namedtuple("VersionInfo", "major minor micro")
|
VersionInfo = namedtuple("VersionInfo", "major minor micro")
|
||||||
version_info = VersionInfo(major="1", minor="1", micro="6")
|
version_info = VersionInfo(major="1", minor="1", micro="10")
|
||||||
|
@@ -4,12 +4,12 @@
|
|||||||
"Version": {
|
"Version": {
|
||||||
"Major": "1",
|
"Major": "1",
|
||||||
"Minor": "1",
|
"Minor": "1",
|
||||||
"Micro": "6"
|
"Micro": "10"
|
||||||
},
|
},
|
||||||
"Author": "Sven Heidemann",
|
"Author": "Sven Heidemann",
|
||||||
"AuthorEmail": "sven.heidemann@sh-edraft.de",
|
"AuthorEmail": "sven.heidemann@sh-edraft.de",
|
||||||
"Description": "Keksdose bot",
|
"Description": "sh-edraft.de Discord bot",
|
||||||
"LongDescription": "Discord bot for the Keksdose discord Server",
|
"LongDescription": "Discord bot for customers of sh-edraft.de",
|
||||||
"URL": "https://www.sh-edraft.de",
|
"URL": "https://www.sh-edraft.de",
|
||||||
"CopyrightDate": "2022 - 2023",
|
"CopyrightDate": "2022 - 2023",
|
||||||
"CopyrightName": "sh-edraft.de",
|
"CopyrightName": "sh-edraft.de",
|
||||||
@@ -68,6 +68,7 @@
|
|||||||
"../modules/database/database.json",
|
"../modules/database/database.json",
|
||||||
"../modules/level/level.json",
|
"../modules/level/level.json",
|
||||||
"../modules/permission/permission.json",
|
"../modules/permission/permission.json",
|
||||||
|
"../modules/short_role_name/short-role-name.json",
|
||||||
"../modules/technician/technician.json"
|
"../modules/technician/technician.json"
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
@@ -1,10 +1,10 @@
|
|||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
"""
|
"""
|
||||||
bot Keksdose bot
|
bot sh-edraft.de Discord bot
|
||||||
~~~~~~~~~~~~~~~~~~~
|
~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
Discord bot for the Keksdose discord Server
|
Discord bot for customers of sh-edraft.de
|
||||||
|
|
||||||
:copyright: (c) 2022 - 2023 sh-edraft.de
|
:copyright: (c) 2022 - 2023 sh-edraft.de
|
||||||
:license: MIT, see LICENSE for more details.
|
:license: MIT, see LICENSE for more details.
|
||||||
@@ -15,7 +15,7 @@ __title__ = "bot.extension"
|
|||||||
__author__ = "Sven Heidemann"
|
__author__ = "Sven Heidemann"
|
||||||
__license__ = "MIT"
|
__license__ = "MIT"
|
||||||
__copyright__ = "Copyright (c) 2022 - 2023 sh-edraft.de"
|
__copyright__ = "Copyright (c) 2022 - 2023 sh-edraft.de"
|
||||||
__version__ = "1.1.6"
|
__version__ = "1.1.10"
|
||||||
|
|
||||||
from collections import namedtuple
|
from collections import namedtuple
|
||||||
|
|
||||||
@@ -23,4 +23,4 @@ from collections import namedtuple
|
|||||||
# imports:
|
# imports:
|
||||||
|
|
||||||
VersionInfo = namedtuple("VersionInfo", "major minor micro")
|
VersionInfo = namedtuple("VersionInfo", "major minor micro")
|
||||||
version_info = VersionInfo(major="1", minor="1", micro="6")
|
version_info = VersionInfo(major="1", minor="1", micro="10")
|
||||||
|
@@ -13,6 +13,7 @@ from modules.config.config_module import ConfigModule
|
|||||||
from modules.database.database_module import DatabaseModule
|
from modules.database.database_module import DatabaseModule
|
||||||
from modules.level.level_module import LevelModule
|
from modules.level.level_module import LevelModule
|
||||||
from modules.permission.permission_module import PermissionModule
|
from modules.permission.permission_module import PermissionModule
|
||||||
|
from modules.short_role_name.short_role_name_module import ShortRoleNameModule
|
||||||
from modules.technician.technician_module import TechnicianModule
|
from modules.technician.technician_module import TechnicianModule
|
||||||
|
|
||||||
|
|
||||||
@@ -35,6 +36,7 @@ class ModuleList:
|
|||||||
ApiModule,
|
ApiModule,
|
||||||
TechnicianModule,
|
TechnicianModule,
|
||||||
AchievementsModule,
|
AchievementsModule,
|
||||||
|
ShortRoleNameModule,
|
||||||
# has to be last!
|
# has to be last!
|
||||||
BootLogModule,
|
BootLogModule,
|
||||||
CoreExtensionModule,
|
CoreExtensionModule,
|
||||||
|
@@ -13,9 +13,12 @@ from bot_data.migration.config_feature_flags_migration import ConfigFeatureFlags
|
|||||||
from bot_data.migration.config_migration import ConfigMigration
|
from bot_data.migration.config_migration import ConfigMigration
|
||||||
from bot_data.migration.db_history_migration import DBHistoryMigration
|
from bot_data.migration.db_history_migration import DBHistoryMigration
|
||||||
from bot_data.migration.default_role_migration import DefaultRoleMigration
|
from bot_data.migration.default_role_migration import DefaultRoleMigration
|
||||||
|
from bot_data.migration.fix_updates_migration import FixUpdatesMigration
|
||||||
from bot_data.migration.initial_migration import InitialMigration
|
from bot_data.migration.initial_migration import InitialMigration
|
||||||
from bot_data.migration.level_migration import LevelMigration
|
from bot_data.migration.level_migration import LevelMigration
|
||||||
from bot_data.migration.remove_stats_migration import RemoveStatsMigration
|
from bot_data.migration.remove_stats_migration import RemoveStatsMigration
|
||||||
|
from bot_data.migration.short_role_name_migration import ShortRoleNameMigration
|
||||||
|
from bot_data.migration.short_role_name_only_highest_migration import ShortRoleNameOnlyHighestMigration
|
||||||
from bot_data.migration.stats_migration import StatsMigration
|
from bot_data.migration.stats_migration import StatsMigration
|
||||||
from bot_data.migration.user_joined_game_server_migration import UserJoinedGameServerMigration
|
from bot_data.migration.user_joined_game_server_migration import UserJoinedGameServerMigration
|
||||||
from bot_data.migration.user_message_count_per_hour_migration import (
|
from bot_data.migration.user_message_count_per_hour_migration import (
|
||||||
@@ -50,3 +53,6 @@ class StartupMigrationExtension(StartupExtensionABC):
|
|||||||
services.add_transient(MigrationABC, ConfigMigration) # 19.07.2023 #127 - 1.1.0
|
services.add_transient(MigrationABC, ConfigMigration) # 19.07.2023 #127 - 1.1.0
|
||||||
services.add_transient(MigrationABC, ConfigFeatureFlagsMigration) # 15.08.2023 #334 - 1.1.0
|
services.add_transient(MigrationABC, ConfigFeatureFlagsMigration) # 15.08.2023 #334 - 1.1.0
|
||||||
services.add_transient(MigrationABC, DefaultRoleMigration) # 24.09.2023 #360 - 1.1.3
|
services.add_transient(MigrationABC, DefaultRoleMigration) # 24.09.2023 #360 - 1.1.3
|
||||||
|
services.add_transient(MigrationABC, ShortRoleNameMigration) # 28.09.2023 #378 - 1.1.7
|
||||||
|
services.add_transient(MigrationABC, FixUpdatesMigration) # 28.09.2023 #378 - 1.1.7
|
||||||
|
services.add_transient(MigrationABC, ShortRoleNameOnlyHighestMigration) # 02.10.2023 #391 - 1.1.9
|
||||||
|
@@ -21,7 +21,6 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"common": {
|
"common": {
|
||||||
"feature_not_activated": "Diese Funktion ist deaktiviert",
|
|
||||||
"bot_has_no_permission_message": "Ey!!!\nWas soll das?\nIch habe keine Berechtigungen :(\nScheiß System...",
|
"bot_has_no_permission_message": "Ey!!!\nWas soll das?\nIch habe keine Berechtigungen :(\nScheiß System...",
|
||||||
"colors": {
|
"colors": {
|
||||||
"blue": "Blau",
|
"blue": "Blau",
|
||||||
@@ -83,6 +82,7 @@
|
|||||||
"unexpected_quote_error": "Fehler: Unerwarteter Fehler beim Anführungszeichen!",
|
"unexpected_quote_error": "Fehler: Unerwarteter Fehler beim Anführungszeichen!",
|
||||||
"user_input_error": "Fehler: Eingabefehler!"
|
"user_input_error": "Fehler: Eingabefehler!"
|
||||||
},
|
},
|
||||||
|
"feature_not_activated": "Diese Funktion ist deaktiviert",
|
||||||
"hello_world": "Hallo Welt",
|
"hello_world": "Hallo Welt",
|
||||||
"no_permission_message": "Nein!\nIch höre nicht auf dich ¯\\_(ツ)_/¯",
|
"no_permission_message": "Nein!\nIch höre nicht auf dich ¯\\_(ツ)_/¯",
|
||||||
"not_implemented_yet": "Ey Alter, das kann ich noch nicht...",
|
"not_implemented_yet": "Ey Alter, das kann ich noch nicht...",
|
||||||
@@ -95,10 +95,10 @@
|
|||||||
},
|
},
|
||||||
"modules": {
|
"modules": {
|
||||||
"achievements": {
|
"achievements": {
|
||||||
"got_new_achievement": "{} hat die Errungenschaft {} freigeschaltet :D",
|
|
||||||
"commands": {
|
"commands": {
|
||||||
"check": "Alles klar, ich schaue eben nach... nom nom"
|
"check": "Alles klar, ich schaue eben nach... nom nom"
|
||||||
}
|
},
|
||||||
|
"got_new_achievement": "{} hat die Errungenschaft {} freigeschaltet :D"
|
||||||
},
|
},
|
||||||
"auto_role": {
|
"auto_role": {
|
||||||
"add": {
|
"add": {
|
||||||
@@ -123,6 +123,9 @@
|
|||||||
},
|
},
|
||||||
"success": "auto-role {} wurde entfernt :D"
|
"success": "auto-role {} wurde entfernt :D"
|
||||||
},
|
},
|
||||||
|
"react": {
|
||||||
|
"success": "Alle Reaktionen wurden hinzugefügt"
|
||||||
|
},
|
||||||
"rule": {
|
"rule": {
|
||||||
"add": {
|
"add": {
|
||||||
"error": {
|
"error": {
|
||||||
@@ -152,38 +155,37 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"base": {
|
"base": {
|
||||||
"member_left_message": "{} hat uns leider verlassen :(",
|
|
||||||
"complaints": {
|
|
||||||
"title": "Beschwerde einreichen",
|
|
||||||
"label": "Beschwerde",
|
|
||||||
"message": "{} hat eine Beschwerde eingereicht:\n{}",
|
|
||||||
"response": "Danke für deine Beschwerde"
|
|
||||||
},
|
|
||||||
"bug": {
|
|
||||||
"title": "Bug melden",
|
|
||||||
"label": "Bug",
|
|
||||||
"message": "{} meldet einen Bug:\n{}",
|
|
||||||
"response": "Danke für dein Feedback :D"
|
|
||||||
},
|
|
||||||
"afk_command_channel_missing_message": "Zu unfähig einem Sprachkanal beizutreten?",
|
"afk_command_channel_missing_message": "Zu unfähig einem Sprachkanal beizutreten?",
|
||||||
"afk_command_move_message": "Ich verschiebe dich ja schon... (◔_◔)",
|
"afk_command_move_message": "Ich verschiebe dich ja schon... (◔_◔)",
|
||||||
|
"bug": {
|
||||||
|
"label": "Bug",
|
||||||
|
"message": "{} meldet einen Bug:\n{}",
|
||||||
|
"response": "Danke für dein Feedback :D",
|
||||||
|
"title": "Bug melden"
|
||||||
|
},
|
||||||
|
"complaints": {
|
||||||
|
"label": "Beschwerde",
|
||||||
|
"message": "{} hat eine Beschwerde eingereicht:\n{}",
|
||||||
|
"response": "Danke für deine Beschwerde",
|
||||||
|
"title": "Beschwerde einreichen"
|
||||||
|
},
|
||||||
"game_server": {
|
"game_server": {
|
||||||
|
"add": {
|
||||||
|
"success": "Gameserver {} wurde hinzugefügt :)"
|
||||||
|
},
|
||||||
"error": {
|
"error": {
|
||||||
"nothing_found": "Keine Gameserver gefunden."
|
"nothing_found": "Keine Gameserver gefunden."
|
||||||
},
|
},
|
||||||
"list_members": {
|
|
||||||
"title": "Mitglieder",
|
|
||||||
"description": "Konfigurierte Mitglieder:",
|
|
||||||
"users": "Mitglieder"
|
|
||||||
},
|
|
||||||
"list": {
|
"list": {
|
||||||
"title": "Gameserver",
|
"api_key": "API Key",
|
||||||
"description": "Konfigurierte Gameserver:",
|
"description": "Konfigurierte Gameserver:",
|
||||||
"name": "Name",
|
"name": "Name",
|
||||||
"api_key": "API Key"
|
"title": "Gameserver"
|
||||||
},
|
},
|
||||||
"add": {
|
"list_members": {
|
||||||
"success": "Gameserver {} wurde hinzugefügt :)"
|
"description": "Konfigurierte Mitglieder:",
|
||||||
|
"title": "Mitglieder",
|
||||||
|
"users": "Mitglieder"
|
||||||
},
|
},
|
||||||
"remove": {
|
"remove": {
|
||||||
"success": "Gameserver wurde entfernt :D"
|
"success": "Gameserver wurde entfernt :D"
|
||||||
@@ -210,6 +212,7 @@
|
|||||||
"moved": "Alle Personen aus {} wurden nach {} verschoben."
|
"moved": "Alle Personen aus {} wurden nach {} verschoben."
|
||||||
},
|
},
|
||||||
"member_joined_help_voice_channel": "{} braucht Hilfe, bitte kümmere dich drum :D",
|
"member_joined_help_voice_channel": "{} braucht Hilfe, bitte kümmere dich drum :D",
|
||||||
|
"member_left_message": "{} hat uns leider verlassen :(",
|
||||||
"pong": "Pong",
|
"pong": "Pong",
|
||||||
"presence": {
|
"presence": {
|
||||||
"changed": "Presence wurde geändert.",
|
"changed": "Presence wurde geändert.",
|
||||||
@@ -346,6 +349,9 @@
|
|||||||
"moderator": {
|
"moderator": {
|
||||||
"purge_message": "Na gut..., ich lösche alle Nachrichten wenns sein muss."
|
"purge_message": "Na gut..., ich lösche alle Nachrichten wenns sein muss."
|
||||||
},
|
},
|
||||||
|
"short_role_name": {
|
||||||
|
"checked_message": "Die Rollen Kürzel wurden überprüft"
|
||||||
|
},
|
||||||
"technician": {
|
"technician": {
|
||||||
"api_key": {
|
"api_key": {
|
||||||
"add": {
|
"add": {
|
||||||
@@ -357,10 +363,10 @@
|
|||||||
"success": "API-Schlüssel wurde entfernt :D"
|
"success": "API-Schlüssel wurde entfernt :D"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"synced_message": "Der Sync wurde abgeschlossen.",
|
|
||||||
"log_message": "Hier sind deine Logdateien! :)",
|
"log_message": "Hier sind deine Logdateien! :)",
|
||||||
"restart_message": "Bin gleich wieder da :D",
|
"restart_message": "Bin gleich wieder da :D",
|
||||||
"shutdown_message": "Trauert nicht um mich, es war eine logische Entscheidung. Das Wohl von Vielen, es wiegt schwerer als das Wohl von Wenigen oder eines Einzelnen. Ich war es und ich werde es immer sein, euer Freund. Lebt lange und in Frieden :)"
|
"shutdown_message": "Trauert nicht um mich, es war eine logische Entscheidung. Das Wohl von Vielen, es wiegt schwerer als das Wohl von Wenigen oder eines Einzelnen. Ich war es und ich werde es immer sein, euer Freund. Lebt lange und in Frieden :)",
|
||||||
|
"synced_message": "Der Sync wurde abgeschlossen."
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
@@ -1,10 +1,10 @@
|
|||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
"""
|
"""
|
||||||
bot Keksdose bot
|
bot sh-edraft.de Discord bot
|
||||||
~~~~~~~~~~~~~~~~~~~
|
~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
Discord bot for the Keksdose discord Server
|
Discord bot for customers of sh-edraft.de
|
||||||
|
|
||||||
:copyright: (c) 2022 - 2023 sh-edraft.de
|
:copyright: (c) 2022 - 2023 sh-edraft.de
|
||||||
:license: MIT, see LICENSE for more details.
|
:license: MIT, see LICENSE for more details.
|
||||||
@@ -15,7 +15,7 @@ __title__ = "bot_api"
|
|||||||
__author__ = "Sven Heidemann"
|
__author__ = "Sven Heidemann"
|
||||||
__license__ = "MIT"
|
__license__ = "MIT"
|
||||||
__copyright__ = "Copyright (c) 2022 - 2023 sh-edraft.de"
|
__copyright__ = "Copyright (c) 2022 - 2023 sh-edraft.de"
|
||||||
__version__ = "1.1.6"
|
__version__ = "1.1.10"
|
||||||
|
|
||||||
from collections import namedtuple
|
from collections import namedtuple
|
||||||
|
|
||||||
@@ -23,4 +23,4 @@ from collections import namedtuple
|
|||||||
# imports:
|
# imports:
|
||||||
|
|
||||||
VersionInfo = namedtuple("VersionInfo", "major minor micro")
|
VersionInfo = namedtuple("VersionInfo", "major minor micro")
|
||||||
version_info = VersionInfo(major="1", minor="1", micro="6")
|
version_info = VersionInfo(major="1", minor="1", micro="10")
|
||||||
|
@@ -1,10 +1,10 @@
|
|||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
"""
|
"""
|
||||||
bot Keksdose bot
|
bot sh-edraft.de Discord bot
|
||||||
~~~~~~~~~~~~~~~~~~~
|
~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
Discord bot for the Keksdose discord Server
|
Discord bot for customers of sh-edraft.de
|
||||||
|
|
||||||
:copyright: (c) 2022 - 2023 sh-edraft.de
|
:copyright: (c) 2022 - 2023 sh-edraft.de
|
||||||
:license: MIT, see LICENSE for more details.
|
:license: MIT, see LICENSE for more details.
|
||||||
@@ -15,7 +15,7 @@ __title__ = "bot_api.abc"
|
|||||||
__author__ = "Sven Heidemann"
|
__author__ = "Sven Heidemann"
|
||||||
__license__ = "MIT"
|
__license__ = "MIT"
|
||||||
__copyright__ = "Copyright (c) 2022 - 2023 sh-edraft.de"
|
__copyright__ = "Copyright (c) 2022 - 2023 sh-edraft.de"
|
||||||
__version__ = "1.1.6"
|
__version__ = "1.1.10"
|
||||||
|
|
||||||
from collections import namedtuple
|
from collections import namedtuple
|
||||||
|
|
||||||
@@ -23,4 +23,4 @@ from collections import namedtuple
|
|||||||
# imports:
|
# imports:
|
||||||
|
|
||||||
VersionInfo = namedtuple("VersionInfo", "major minor micro")
|
VersionInfo = namedtuple("VersionInfo", "major minor micro")
|
||||||
version_info = VersionInfo(major="1", minor="1", micro="6")
|
version_info = VersionInfo(major="1", minor="1", micro="10")
|
||||||
|
@@ -4,7 +4,7 @@
|
|||||||
"Version": {
|
"Version": {
|
||||||
"Major": "1",
|
"Major": "1",
|
||||||
"Minor": "1",
|
"Minor": "1",
|
||||||
"Micro": "6"
|
"Micro": "10"
|
||||||
},
|
},
|
||||||
"Author": "",
|
"Author": "",
|
||||||
"AuthorEmail": "",
|
"AuthorEmail": "",
|
||||||
|
@@ -1,10 +1,10 @@
|
|||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
"""
|
"""
|
||||||
bot Keksdose bot
|
bot sh-edraft.de Discord bot
|
||||||
~~~~~~~~~~~~~~~~~~~
|
~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
Discord bot for the Keksdose discord Server
|
Discord bot for customers of sh-edraft.de
|
||||||
|
|
||||||
:copyright: (c) 2022 - 2023 sh-edraft.de
|
:copyright: (c) 2022 - 2023 sh-edraft.de
|
||||||
:license: MIT, see LICENSE for more details.
|
:license: MIT, see LICENSE for more details.
|
||||||
@@ -15,7 +15,7 @@ __title__ = "bot_api.configuration"
|
|||||||
__author__ = "Sven Heidemann"
|
__author__ = "Sven Heidemann"
|
||||||
__license__ = "MIT"
|
__license__ = "MIT"
|
||||||
__copyright__ = "Copyright (c) 2022 - 2023 sh-edraft.de"
|
__copyright__ = "Copyright (c) 2022 - 2023 sh-edraft.de"
|
||||||
__version__ = "1.1.6"
|
__version__ = "1.1.10"
|
||||||
|
|
||||||
from collections import namedtuple
|
from collections import namedtuple
|
||||||
|
|
||||||
@@ -23,4 +23,4 @@ from collections import namedtuple
|
|||||||
# imports
|
# imports
|
||||||
|
|
||||||
VersionInfo = namedtuple("VersionInfo", "major minor micro")
|
VersionInfo = namedtuple("VersionInfo", "major minor micro")
|
||||||
version_info = VersionInfo(major="1", minor="1", micro="6")
|
version_info = VersionInfo(major="1", minor="1", micro="10")
|
||||||
|
@@ -1,10 +1,10 @@
|
|||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
"""
|
"""
|
||||||
bot Keksdose bot
|
bot sh-edraft.de Discord bot
|
||||||
~~~~~~~~~~~~~~~~~~~
|
~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
Discord bot for the Keksdose discord Server
|
Discord bot for customers of sh-edraft.de
|
||||||
|
|
||||||
:copyright: (c) 2022 - 2023 sh-edraft.de
|
:copyright: (c) 2022 - 2023 sh-edraft.de
|
||||||
:license: MIT, see LICENSE for more details.
|
:license: MIT, see LICENSE for more details.
|
||||||
@@ -15,7 +15,7 @@ __title__ = "bot_api.controller"
|
|||||||
__author__ = "Sven Heidemann"
|
__author__ = "Sven Heidemann"
|
||||||
__license__ = "MIT"
|
__license__ = "MIT"
|
||||||
__copyright__ = "Copyright (c) 2022 - 2023 sh-edraft.de"
|
__copyright__ = "Copyright (c) 2022 - 2023 sh-edraft.de"
|
||||||
__version__ = "1.1.6"
|
__version__ = "1.1.10"
|
||||||
|
|
||||||
from collections import namedtuple
|
from collections import namedtuple
|
||||||
|
|
||||||
@@ -23,4 +23,4 @@ from collections import namedtuple
|
|||||||
# imports:
|
# imports:
|
||||||
|
|
||||||
VersionInfo = namedtuple("VersionInfo", "major minor micro")
|
VersionInfo = namedtuple("VersionInfo", "major minor micro")
|
||||||
version_info = VersionInfo(major="1", minor="1", micro="6")
|
version_info = VersionInfo(major="1", minor="1", micro="10")
|
||||||
|
@@ -1,10 +1,10 @@
|
|||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
"""
|
"""
|
||||||
bot Keksdose bot
|
bot sh-edraft.de Discord bot
|
||||||
~~~~~~~~~~~~~~~~~~~
|
~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
Discord bot for the Keksdose discord Server
|
Discord bot for customers of sh-edraft.de
|
||||||
|
|
||||||
:copyright: (c) 2022 - 2023 sh-edraft.de
|
:copyright: (c) 2022 - 2023 sh-edraft.de
|
||||||
:license: MIT, see LICENSE for more details.
|
:license: MIT, see LICENSE for more details.
|
||||||
@@ -15,7 +15,7 @@ __title__ = "bot_api.event"
|
|||||||
__author__ = "Sven Heidemann"
|
__author__ = "Sven Heidemann"
|
||||||
__license__ = "MIT"
|
__license__ = "MIT"
|
||||||
__copyright__ = "Copyright (c) 2022 - 2023 sh-edraft.de"
|
__copyright__ = "Copyright (c) 2022 - 2023 sh-edraft.de"
|
||||||
__version__ = "1.1.6"
|
__version__ = "1.1.10"
|
||||||
|
|
||||||
from collections import namedtuple
|
from collections import namedtuple
|
||||||
|
|
||||||
@@ -23,4 +23,4 @@ from collections import namedtuple
|
|||||||
# imports:
|
# imports:
|
||||||
|
|
||||||
VersionInfo = namedtuple("VersionInfo", "major minor micro")
|
VersionInfo = namedtuple("VersionInfo", "major minor micro")
|
||||||
version_info = VersionInfo(major="1", minor="1", micro="6")
|
version_info = VersionInfo(major="1", minor="1", micro="10")
|
||||||
|
@@ -1,10 +1,10 @@
|
|||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
"""
|
"""
|
||||||
bot Keksdose bot
|
bot sh-edraft.de Discord bot
|
||||||
~~~~~~~~~~~~~~~~~~~
|
~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
Discord bot for the Keksdose discord Server
|
Discord bot for customers of sh-edraft.de
|
||||||
|
|
||||||
:copyright: (c) 2022 - 2023 sh-edraft.de
|
:copyright: (c) 2022 - 2023 sh-edraft.de
|
||||||
:license: MIT, see LICENSE for more details.
|
:license: MIT, see LICENSE for more details.
|
||||||
@@ -15,7 +15,7 @@ __title__ = "bot_api.exception"
|
|||||||
__author__ = "Sven Heidemann"
|
__author__ = "Sven Heidemann"
|
||||||
__license__ = "MIT"
|
__license__ = "MIT"
|
||||||
__copyright__ = "Copyright (c) 2022 - 2023 sh-edraft.de"
|
__copyright__ = "Copyright (c) 2022 - 2023 sh-edraft.de"
|
||||||
__version__ = "1.1.6"
|
__version__ = "1.1.10"
|
||||||
|
|
||||||
from collections import namedtuple
|
from collections import namedtuple
|
||||||
|
|
||||||
@@ -23,4 +23,4 @@ from collections import namedtuple
|
|||||||
# imports:
|
# imports:
|
||||||
|
|
||||||
VersionInfo = namedtuple("VersionInfo", "major minor micro")
|
VersionInfo = namedtuple("VersionInfo", "major minor micro")
|
||||||
version_info = VersionInfo(major="1", minor="1", micro="6")
|
version_info = VersionInfo(major="1", minor="1", micro="10")
|
||||||
|
@@ -1,10 +1,10 @@
|
|||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
"""
|
"""
|
||||||
bot Keksdose bot
|
bot sh-edraft.de Discord bot
|
||||||
~~~~~~~~~~~~~~~~~~~
|
~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
Discord bot for the Keksdose discord Server
|
Discord bot for customers of sh-edraft.de
|
||||||
|
|
||||||
:copyright: (c) 2022 - 2023 sh-edraft.de
|
:copyright: (c) 2022 - 2023 sh-edraft.de
|
||||||
:license: MIT, see LICENSE for more details.
|
:license: MIT, see LICENSE for more details.
|
||||||
@@ -15,7 +15,7 @@ __title__ = "bot_api.filter"
|
|||||||
__author__ = "Sven Heidemann"
|
__author__ = "Sven Heidemann"
|
||||||
__license__ = "MIT"
|
__license__ = "MIT"
|
||||||
__copyright__ = "Copyright (c) 2022 - 2023 sh-edraft.de"
|
__copyright__ = "Copyright (c) 2022 - 2023 sh-edraft.de"
|
||||||
__version__ = "1.1.6"
|
__version__ = "1.1.10"
|
||||||
|
|
||||||
from collections import namedtuple
|
from collections import namedtuple
|
||||||
|
|
||||||
@@ -23,4 +23,4 @@ from collections import namedtuple
|
|||||||
# imports:
|
# imports:
|
||||||
|
|
||||||
VersionInfo = namedtuple("VersionInfo", "major minor micro")
|
VersionInfo = namedtuple("VersionInfo", "major minor micro")
|
||||||
version_info = VersionInfo(major="1", minor="1", micro="6")
|
version_info = VersionInfo(major="1", minor="1", micro="10")
|
||||||
|
@@ -1,10 +1,10 @@
|
|||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
"""
|
"""
|
||||||
bot Keksdose bot
|
bot sh-edraft.de Discord bot
|
||||||
~~~~~~~~~~~~~~~~~~~
|
~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
Discord bot for the Keksdose discord Server
|
Discord bot for customers of sh-edraft.de
|
||||||
|
|
||||||
:copyright: (c) 2022 - 2023 sh-edraft.de
|
:copyright: (c) 2022 - 2023 sh-edraft.de
|
||||||
:license: MIT, see LICENSE for more details.
|
:license: MIT, see LICENSE for more details.
|
||||||
@@ -15,7 +15,7 @@ __title__ = "bot_api.filter.discord"
|
|||||||
__author__ = "Sven Heidemann"
|
__author__ = "Sven Heidemann"
|
||||||
__license__ = "MIT"
|
__license__ = "MIT"
|
||||||
__copyright__ = "Copyright (c) 2022 - 2023 sh-edraft.de"
|
__copyright__ = "Copyright (c) 2022 - 2023 sh-edraft.de"
|
||||||
__version__ = "1.1.6"
|
__version__ = "1.1.10"
|
||||||
|
|
||||||
from collections import namedtuple
|
from collections import namedtuple
|
||||||
|
|
||||||
@@ -23,4 +23,4 @@ from collections import namedtuple
|
|||||||
# imports:
|
# imports:
|
||||||
|
|
||||||
VersionInfo = namedtuple("VersionInfo", "major minor micro")
|
VersionInfo = namedtuple("VersionInfo", "major minor micro")
|
||||||
version_info = VersionInfo(major="1", minor="1", micro="6")
|
version_info = VersionInfo(major="1", minor="1", micro="10")
|
||||||
|
@@ -1,10 +1,10 @@
|
|||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
"""
|
"""
|
||||||
bot Keksdose bot
|
bot sh-edraft.de Discord bot
|
||||||
~~~~~~~~~~~~~~~~~~~
|
~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
Discord bot for the Keksdose discord Server
|
Discord bot for customers of sh-edraft.de
|
||||||
|
|
||||||
:copyright: (c) 2022 - 2023 sh-edraft.de
|
:copyright: (c) 2022 - 2023 sh-edraft.de
|
||||||
:license: MIT, see LICENSE for more details.
|
:license: MIT, see LICENSE for more details.
|
||||||
@@ -15,7 +15,7 @@ __title__ = "bot_api.logging"
|
|||||||
__author__ = "Sven Heidemann"
|
__author__ = "Sven Heidemann"
|
||||||
__license__ = "MIT"
|
__license__ = "MIT"
|
||||||
__copyright__ = "Copyright (c) 2022 - 2023 sh-edraft.de"
|
__copyright__ = "Copyright (c) 2022 - 2023 sh-edraft.de"
|
||||||
__version__ = "1.1.6"
|
__version__ = "1.1.10"
|
||||||
|
|
||||||
from collections import namedtuple
|
from collections import namedtuple
|
||||||
|
|
||||||
@@ -23,4 +23,4 @@ from collections import namedtuple
|
|||||||
# imports:
|
# imports:
|
||||||
|
|
||||||
VersionInfo = namedtuple("VersionInfo", "major minor micro")
|
VersionInfo = namedtuple("VersionInfo", "major minor micro")
|
||||||
version_info = VersionInfo(major="1", minor="1", micro="6")
|
version_info = VersionInfo(major="1", minor="1", micro="10")
|
||||||
|
@@ -1,10 +1,10 @@
|
|||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
"""
|
"""
|
||||||
bot Keksdose bot
|
bot sh-edraft.de Discord bot
|
||||||
~~~~~~~~~~~~~~~~~~~
|
~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
Discord bot for the Keksdose discord Server
|
Discord bot for customers of sh-edraft.de
|
||||||
|
|
||||||
:copyright: (c) 2022 - 2023 sh-edraft.de
|
:copyright: (c) 2022 - 2023 sh-edraft.de
|
||||||
:license: MIT, see LICENSE for more details.
|
:license: MIT, see LICENSE for more details.
|
||||||
@@ -15,7 +15,7 @@ __title__ = "bot_api.model"
|
|||||||
__author__ = "Sven Heidemann"
|
__author__ = "Sven Heidemann"
|
||||||
__license__ = "MIT"
|
__license__ = "MIT"
|
||||||
__copyright__ = "Copyright (c) 2022 - 2023 sh-edraft.de"
|
__copyright__ = "Copyright (c) 2022 - 2023 sh-edraft.de"
|
||||||
__version__ = "1.1.6"
|
__version__ = "1.1.10"
|
||||||
|
|
||||||
from collections import namedtuple
|
from collections import namedtuple
|
||||||
|
|
||||||
@@ -23,4 +23,4 @@ from collections import namedtuple
|
|||||||
# imports:
|
# imports:
|
||||||
|
|
||||||
VersionInfo = namedtuple("VersionInfo", "major minor micro")
|
VersionInfo = namedtuple("VersionInfo", "major minor micro")
|
||||||
version_info = VersionInfo(major="1", minor="1", micro="6")
|
version_info = VersionInfo(major="1", minor="1", micro="10")
|
||||||
|
@@ -1,10 +1,10 @@
|
|||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
"""
|
"""
|
||||||
bot Keksdose bot
|
bot sh-edraft.de Discord bot
|
||||||
~~~~~~~~~~~~~~~~~~~
|
~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
Discord bot for the Keksdose discord Server
|
Discord bot for customers of sh-edraft.de
|
||||||
|
|
||||||
:copyright: (c) 2022 - 2023 sh-edraft.de
|
:copyright: (c) 2022 - 2023 sh-edraft.de
|
||||||
:license: MIT, see LICENSE for more details.
|
:license: MIT, see LICENSE for more details.
|
||||||
@@ -15,7 +15,7 @@ __title__ = "bot_api.model.discord"
|
|||||||
__author__ = "Sven Heidemann"
|
__author__ = "Sven Heidemann"
|
||||||
__license__ = "MIT"
|
__license__ = "MIT"
|
||||||
__copyright__ = "Copyright (c) 2022 - 2023 sh-edraft.de"
|
__copyright__ = "Copyright (c) 2022 - 2023 sh-edraft.de"
|
||||||
__version__ = "1.1.6"
|
__version__ = "1.1.10"
|
||||||
|
|
||||||
from collections import namedtuple
|
from collections import namedtuple
|
||||||
|
|
||||||
@@ -23,4 +23,4 @@ from collections import namedtuple
|
|||||||
# imports:
|
# imports:
|
||||||
|
|
||||||
VersionInfo = namedtuple("VersionInfo", "major minor micro")
|
VersionInfo = namedtuple("VersionInfo", "major minor micro")
|
||||||
version_info = VersionInfo(major="1", minor="1", micro="6")
|
version_info = VersionInfo(major="1", minor="1", micro="10")
|
||||||
|
@@ -1,10 +1,10 @@
|
|||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
"""
|
"""
|
||||||
bot Keksdose bot
|
bot sh-edraft.de Discord bot
|
||||||
~~~~~~~~~~~~~~~~~~~
|
~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
Discord bot for the Keksdose discord Server
|
Discord bot for customers of sh-edraft.de
|
||||||
|
|
||||||
:copyright: (c) 2022 - 2023 sh-edraft.de
|
:copyright: (c) 2022 - 2023 sh-edraft.de
|
||||||
:license: MIT, see LICENSE for more details.
|
:license: MIT, see LICENSE for more details.
|
||||||
@@ -15,7 +15,7 @@ __title__ = "bot_api.route"
|
|||||||
__author__ = "Sven Heidemann"
|
__author__ = "Sven Heidemann"
|
||||||
__license__ = "MIT"
|
__license__ = "MIT"
|
||||||
__copyright__ = "Copyright (c) 2022 - 2023 sh-edraft.de"
|
__copyright__ = "Copyright (c) 2022 - 2023 sh-edraft.de"
|
||||||
__version__ = "1.1.6"
|
__version__ = "1.1.10"
|
||||||
|
|
||||||
from collections import namedtuple
|
from collections import namedtuple
|
||||||
|
|
||||||
@@ -23,4 +23,4 @@ from collections import namedtuple
|
|||||||
# imports:
|
# imports:
|
||||||
|
|
||||||
VersionInfo = namedtuple("VersionInfo", "major minor micro")
|
VersionInfo = namedtuple("VersionInfo", "major minor micro")
|
||||||
version_info = VersionInfo(major="1", minor="1", micro="6")
|
version_info = VersionInfo(major="1", minor="1", micro="10")
|
||||||
|
@@ -1,10 +1,10 @@
|
|||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
"""
|
"""
|
||||||
bot Keksdose bot
|
bot sh-edraft.de Discord bot
|
||||||
~~~~~~~~~~~~~~~~~~~
|
~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
Discord bot for the Keksdose discord Server
|
Discord bot for customers of sh-edraft.de
|
||||||
|
|
||||||
:copyright: (c) 2022 - 2023 sh-edraft.de
|
:copyright: (c) 2022 - 2023 sh-edraft.de
|
||||||
:license: MIT, see LICENSE for more details.
|
:license: MIT, see LICENSE for more details.
|
||||||
@@ -15,7 +15,7 @@ __title__ = "bot_api.service"
|
|||||||
__author__ = "Sven Heidemann"
|
__author__ = "Sven Heidemann"
|
||||||
__license__ = "MIT"
|
__license__ = "MIT"
|
||||||
__copyright__ = "Copyright (c) 2022 - 2023 sh-edraft.de"
|
__copyright__ = "Copyright (c) 2022 - 2023 sh-edraft.de"
|
||||||
__version__ = "1.1.6"
|
__version__ = "1.1.10"
|
||||||
|
|
||||||
from collections import namedtuple
|
from collections import namedtuple
|
||||||
|
|
||||||
@@ -23,4 +23,4 @@ from collections import namedtuple
|
|||||||
# imports
|
# imports
|
||||||
|
|
||||||
VersionInfo = namedtuple("VersionInfo", "major minor micro")
|
VersionInfo = namedtuple("VersionInfo", "major minor micro")
|
||||||
version_info = VersionInfo(major="1", minor="1", micro="6")
|
version_info = VersionInfo(major="1", minor="1", micro="10")
|
||||||
|
@@ -1,10 +1,10 @@
|
|||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
"""
|
"""
|
||||||
bot Keksdose bot
|
bot sh-edraft.de Discord bot
|
||||||
~~~~~~~~~~~~~~~~~~~
|
~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
Discord bot for the Keksdose discord Server
|
Discord bot for customers of sh-edraft.de
|
||||||
|
|
||||||
:copyright: (c) 2022 - 2023 sh-edraft.de
|
:copyright: (c) 2022 - 2023 sh-edraft.de
|
||||||
:license: MIT, see LICENSE for more details.
|
:license: MIT, see LICENSE for more details.
|
||||||
@@ -15,7 +15,7 @@ __title__ = "bot_api.transformer"
|
|||||||
__author__ = "Sven Heidemann"
|
__author__ = "Sven Heidemann"
|
||||||
__license__ = "MIT"
|
__license__ = "MIT"
|
||||||
__copyright__ = "Copyright (c) 2022 - 2023 sh-edraft.de"
|
__copyright__ = "Copyright (c) 2022 - 2023 sh-edraft.de"
|
||||||
__version__ = "1.1.6"
|
__version__ = "1.1.10"
|
||||||
|
|
||||||
from collections import namedtuple
|
from collections import namedtuple
|
||||||
|
|
||||||
@@ -23,4 +23,4 @@ from collections import namedtuple
|
|||||||
# imports:
|
# imports:
|
||||||
|
|
||||||
VersionInfo = namedtuple("VersionInfo", "major minor micro")
|
VersionInfo = namedtuple("VersionInfo", "major minor micro")
|
||||||
version_info = VersionInfo(major="1", minor="1", micro="6")
|
version_info = VersionInfo(major="1", minor="1", micro="10")
|
||||||
|
@@ -1,10 +1,10 @@
|
|||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
"""
|
"""
|
||||||
bot Keksdose bot
|
bot sh-edraft.de Discord bot
|
||||||
~~~~~~~~~~~~~~~~~~~
|
~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
Discord bot for the Keksdose discord Server
|
Discord bot for customers of sh-edraft.de
|
||||||
|
|
||||||
:copyright: (c) 2022 - 2023 sh-edraft.de
|
:copyright: (c) 2022 - 2023 sh-edraft.de
|
||||||
:license: MIT, see LICENSE for more details.
|
:license: MIT, see LICENSE for more details.
|
||||||
@@ -15,7 +15,7 @@ __title__ = "bot_core"
|
|||||||
__author__ = "Sven Heidemann"
|
__author__ = "Sven Heidemann"
|
||||||
__license__ = "MIT"
|
__license__ = "MIT"
|
||||||
__copyright__ = "Copyright (c) 2022 - 2023 sh-edraft.de"
|
__copyright__ = "Copyright (c) 2022 - 2023 sh-edraft.de"
|
||||||
__version__ = "1.1.6"
|
__version__ = "1.1.10"
|
||||||
|
|
||||||
from collections import namedtuple
|
from collections import namedtuple
|
||||||
|
|
||||||
@@ -23,4 +23,4 @@ from collections import namedtuple
|
|||||||
# imports
|
# imports
|
||||||
|
|
||||||
VersionInfo = namedtuple("VersionInfo", "major minor micro")
|
VersionInfo = namedtuple("VersionInfo", "major minor micro")
|
||||||
version_info = VersionInfo(major="1", minor="1", micro="6")
|
version_info = VersionInfo(major="1", minor="1", micro="10")
|
||||||
|
@@ -1,10 +1,10 @@
|
|||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
"""
|
"""
|
||||||
bot Keksdose bot
|
bot sh-edraft.de Discord bot
|
||||||
~~~~~~~~~~~~~~~~~~~
|
~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
Discord bot for the Keksdose discord Server
|
Discord bot for customers of sh-edraft.de
|
||||||
|
|
||||||
:copyright: (c) 2022 - 2023 sh-edraft.de
|
:copyright: (c) 2022 - 2023 sh-edraft.de
|
||||||
:license: MIT, see LICENSE for more details.
|
:license: MIT, see LICENSE for more details.
|
||||||
@@ -15,7 +15,7 @@ __title__ = "bot_core.abc"
|
|||||||
__author__ = "Sven Heidemann"
|
__author__ = "Sven Heidemann"
|
||||||
__license__ = "MIT"
|
__license__ = "MIT"
|
||||||
__copyright__ = "Copyright (c) 2022 - 2023 sh-edraft.de"
|
__copyright__ = "Copyright (c) 2022 - 2023 sh-edraft.de"
|
||||||
__version__ = "1.1.6"
|
__version__ = "1.1.10"
|
||||||
|
|
||||||
from collections import namedtuple
|
from collections import namedtuple
|
||||||
|
|
||||||
@@ -23,4 +23,4 @@ from collections import namedtuple
|
|||||||
# imports:
|
# imports:
|
||||||
|
|
||||||
VersionInfo = namedtuple("VersionInfo", "major minor micro")
|
VersionInfo = namedtuple("VersionInfo", "major minor micro")
|
||||||
version_info = VersionInfo(major="1", minor="1", micro="6")
|
version_info = VersionInfo(major="1", minor="1", micro="10")
|
||||||
|
@@ -4,7 +4,7 @@
|
|||||||
"Version": {
|
"Version": {
|
||||||
"Major": "1",
|
"Major": "1",
|
||||||
"Minor": "1",
|
"Minor": "1",
|
||||||
"Micro": "6"
|
"Micro": "10"
|
||||||
},
|
},
|
||||||
"Author": "Sven Heidemann",
|
"Author": "Sven Heidemann",
|
||||||
"AuthorEmail": "sven.heidemann@sh-edraft.de",
|
"AuthorEmail": "sven.heidemann@sh-edraft.de",
|
||||||
|
@@ -1,10 +1,10 @@
|
|||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
"""
|
"""
|
||||||
bot Keksdose bot
|
bot sh-edraft.de Discord bot
|
||||||
~~~~~~~~~~~~~~~~~~~
|
~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
Discord bot for the Keksdose discord Server
|
Discord bot for customers of sh-edraft.de
|
||||||
|
|
||||||
:copyright: (c) 2022 - 2023 sh-edraft.de
|
:copyright: (c) 2022 - 2023 sh-edraft.de
|
||||||
:license: MIT, see LICENSE for more details.
|
:license: MIT, see LICENSE for more details.
|
||||||
@@ -15,7 +15,7 @@ __title__ = "bot_core.configuration"
|
|||||||
__author__ = "Sven Heidemann"
|
__author__ = "Sven Heidemann"
|
||||||
__license__ = "MIT"
|
__license__ = "MIT"
|
||||||
__copyright__ = "Copyright (c) 2022 - 2023 sh-edraft.de"
|
__copyright__ = "Copyright (c) 2022 - 2023 sh-edraft.de"
|
||||||
__version__ = "1.1.6"
|
__version__ = "1.1.10"
|
||||||
|
|
||||||
from collections import namedtuple
|
from collections import namedtuple
|
||||||
|
|
||||||
@@ -23,4 +23,4 @@ from collections import namedtuple
|
|||||||
# imports:
|
# imports:
|
||||||
|
|
||||||
VersionInfo = namedtuple("VersionInfo", "major minor micro")
|
VersionInfo = namedtuple("VersionInfo", "major minor micro")
|
||||||
version_info = VersionInfo(major="1", minor="1", micro="6")
|
version_info = VersionInfo(major="1", minor="1", micro="10")
|
||||||
|
@@ -16,9 +16,12 @@ class FeatureFlagsEnum(Enum):
|
|||||||
level_module = "LevelModule"
|
level_module = "LevelModule"
|
||||||
moderator_module = "ModeratorModule"
|
moderator_module = "ModeratorModule"
|
||||||
permission_module = "PermissionModule"
|
permission_module = "PermissionModule"
|
||||||
|
short_role_name_module = "ShortRoleNameModule"
|
||||||
# features
|
# features
|
||||||
api_only = "ApiOnly"
|
api_only = "ApiOnly"
|
||||||
presence = "Presence"
|
presence = "Presence"
|
||||||
version_in_presence = "VersionInPresence"
|
version_in_presence = "VersionInPresence"
|
||||||
game_server = "GameServer"
|
game_server = "GameServer"
|
||||||
sync_xp = "SyncXp"
|
sync_xp = "SyncXp"
|
||||||
|
short_role_name = "ShortRoleName"
|
||||||
|
technician_full_access = "TechnicianFullAccess"
|
||||||
|
@@ -18,12 +18,15 @@ class FeatureFlagsSettings(ConfigurationModelABC):
|
|||||||
FeatureFlagsEnum.moderator_module.value: False, # 02.10.2022 #48
|
FeatureFlagsEnum.moderator_module.value: False, # 02.10.2022 #48
|
||||||
FeatureFlagsEnum.permission_module.value: True, # 02.10.2022 #48
|
FeatureFlagsEnum.permission_module.value: True, # 02.10.2022 #48
|
||||||
FeatureFlagsEnum.config_module.value: True, # 19.07.2023 #127
|
FeatureFlagsEnum.config_module.value: True, # 19.07.2023 #127
|
||||||
|
FeatureFlagsEnum.short_role_name_module.value: True, # 28.09.2023 #378
|
||||||
# features
|
# features
|
||||||
FeatureFlagsEnum.api_only.value: False, # 13.10.2022 #70
|
FeatureFlagsEnum.api_only.value: False, # 13.10.2022 #70
|
||||||
FeatureFlagsEnum.presence.value: True, # 03.10.2022 #56
|
FeatureFlagsEnum.presence.value: True, # 03.10.2022 #56
|
||||||
FeatureFlagsEnum.version_in_presence.value: False, # 21.03.2023 #253
|
FeatureFlagsEnum.version_in_presence.value: False, # 21.03.2023 #253
|
||||||
FeatureFlagsEnum.game_server.value: False, # 25.09.2023 #366
|
FeatureFlagsEnum.game_server.value: False, # 25.09.2023 #366
|
||||||
FeatureFlagsEnum.sync_xp.value: False, # 25.09.2023 #366
|
FeatureFlagsEnum.sync_xp.value: False, # 25.09.2023 #366
|
||||||
|
FeatureFlagsEnum.short_role_name.value: False, # 28.09.2023 #378
|
||||||
|
FeatureFlagsEnum.technician_full_access.value: False, # 03.10.2023 #393
|
||||||
}
|
}
|
||||||
|
|
||||||
def __init__(self, **kwargs: dict):
|
def __init__(self, **kwargs: dict):
|
||||||
|
@@ -1,10 +1,10 @@
|
|||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
"""
|
"""
|
||||||
bot Keksdose bot
|
bot sh-edraft.de Discord bot
|
||||||
~~~~~~~~~~~~~~~~~~~
|
~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
Discord bot for the Keksdose discord Server
|
Discord bot for customers of sh-edraft.de
|
||||||
|
|
||||||
:copyright: (c) 2022 - 2023 sh-edraft.de
|
:copyright: (c) 2022 - 2023 sh-edraft.de
|
||||||
:license: MIT, see LICENSE for more details.
|
:license: MIT, see LICENSE for more details.
|
||||||
@@ -15,7 +15,7 @@ __title__ = "bot_core.core_extension"
|
|||||||
__author__ = "Sven Heidemann"
|
__author__ = "Sven Heidemann"
|
||||||
__license__ = "MIT"
|
__license__ = "MIT"
|
||||||
__copyright__ = "Copyright (c) 2022 - 2023 sh-edraft.de"
|
__copyright__ = "Copyright (c) 2022 - 2023 sh-edraft.de"
|
||||||
__version__ = "1.1.6"
|
__version__ = "1.1.10"
|
||||||
|
|
||||||
from collections import namedtuple
|
from collections import namedtuple
|
||||||
|
|
||||||
@@ -23,4 +23,4 @@ from collections import namedtuple
|
|||||||
# imports:
|
# imports:
|
||||||
|
|
||||||
VersionInfo = namedtuple("VersionInfo", "major minor micro")
|
VersionInfo = namedtuple("VersionInfo", "major minor micro")
|
||||||
version_info = VersionInfo(major="1", minor="1", micro="6")
|
version_info = VersionInfo(major="1", minor="1", micro="10")
|
||||||
|
@@ -1,10 +1,10 @@
|
|||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
"""
|
"""
|
||||||
bot Keksdose bot
|
bot sh-edraft.de Discord bot
|
||||||
~~~~~~~~~~~~~~~~~~~
|
~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
Discord bot for the Keksdose discord Server
|
Discord bot for customers of sh-edraft.de
|
||||||
|
|
||||||
:copyright: (c) 2022 - 2023 sh-edraft.de
|
:copyright: (c) 2022 - 2023 sh-edraft.de
|
||||||
:license: MIT, see LICENSE for more details.
|
:license: MIT, see LICENSE for more details.
|
||||||
@@ -15,7 +15,7 @@ __title__ = "bot_core.events"
|
|||||||
__author__ = "Sven Heidemann"
|
__author__ = "Sven Heidemann"
|
||||||
__license__ = "MIT"
|
__license__ = "MIT"
|
||||||
__copyright__ = "Copyright (c) 2022 - 2023 sh-edraft.de"
|
__copyright__ = "Copyright (c) 2022 - 2023 sh-edraft.de"
|
||||||
__version__ = "1.1.6"
|
__version__ = "1.1.10"
|
||||||
|
|
||||||
from collections import namedtuple
|
from collections import namedtuple
|
||||||
|
|
||||||
@@ -23,4 +23,4 @@ from collections import namedtuple
|
|||||||
# imports:
|
# imports:
|
||||||
|
|
||||||
VersionInfo = namedtuple("VersionInfo", "major minor micro")
|
VersionInfo = namedtuple("VersionInfo", "major minor micro")
|
||||||
version_info = VersionInfo(major="1", minor="1", micro="6")
|
version_info = VersionInfo(major="1", minor="1", micro="10")
|
||||||
|
@@ -1,10 +1,10 @@
|
|||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
"""
|
"""
|
||||||
bot Keksdose bot
|
bot sh-edraft.de Discord bot
|
||||||
~~~~~~~~~~~~~~~~~~~
|
~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
Discord bot for the Keksdose discord Server
|
Discord bot for customers of sh-edraft.de
|
||||||
|
|
||||||
:copyright: (c) 2022 - 2023 sh-edraft.de
|
:copyright: (c) 2022 - 2023 sh-edraft.de
|
||||||
:license: MIT, see LICENSE for more details.
|
:license: MIT, see LICENSE for more details.
|
||||||
@@ -15,7 +15,7 @@ __title__ = "bot_core.exception"
|
|||||||
__author__ = "Sven Heidemann"
|
__author__ = "Sven Heidemann"
|
||||||
__license__ = "MIT"
|
__license__ = "MIT"
|
||||||
__copyright__ = "Copyright (c) 2022 - 2023 sh-edraft.de"
|
__copyright__ = "Copyright (c) 2022 - 2023 sh-edraft.de"
|
||||||
__version__ = "1.1.6"
|
__version__ = "1.1.10"
|
||||||
|
|
||||||
from collections import namedtuple
|
from collections import namedtuple
|
||||||
|
|
||||||
@@ -23,4 +23,4 @@ from collections import namedtuple
|
|||||||
# imports:
|
# imports:
|
||||||
|
|
||||||
VersionInfo = namedtuple("VersionInfo", "major minor micro")
|
VersionInfo = namedtuple("VersionInfo", "major minor micro")
|
||||||
version_info = VersionInfo(major="1", minor="1", micro="6")
|
version_info = VersionInfo(major="1", minor="1", micro="10")
|
||||||
|
@@ -1,10 +1,10 @@
|
|||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
"""
|
"""
|
||||||
bot Keksdose bot
|
bot sh-edraft.de Discord bot
|
||||||
~~~~~~~~~~~~~~~~~~~
|
~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
Discord bot for the Keksdose discord Server
|
Discord bot for customers of sh-edraft.de
|
||||||
|
|
||||||
:copyright: (c) 2022 - 2023 sh-edraft.de
|
:copyright: (c) 2022 - 2023 sh-edraft.de
|
||||||
:license: MIT, see LICENSE for more details.
|
:license: MIT, see LICENSE for more details.
|
||||||
@@ -15,7 +15,7 @@ __title__ = "bot_core.helper"
|
|||||||
__author__ = "Sven Heidemann"
|
__author__ = "Sven Heidemann"
|
||||||
__license__ = "MIT"
|
__license__ = "MIT"
|
||||||
__copyright__ = "Copyright (c) 2022 - 2023 sh-edraft.de"
|
__copyright__ = "Copyright (c) 2022 - 2023 sh-edraft.de"
|
||||||
__version__ = "1.1.6"
|
__version__ = "1.1.10"
|
||||||
|
|
||||||
from collections import namedtuple
|
from collections import namedtuple
|
||||||
|
|
||||||
@@ -23,4 +23,4 @@ from collections import namedtuple
|
|||||||
# imports:
|
# imports:
|
||||||
|
|
||||||
VersionInfo = namedtuple("VersionInfo", "major minor micro")
|
VersionInfo = namedtuple("VersionInfo", "major minor micro")
|
||||||
version_info = VersionInfo(major="1", minor="1", micro="6")
|
version_info = VersionInfo(major="1", minor="1", micro="10")
|
||||||
|
@@ -1,10 +1,10 @@
|
|||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
"""
|
"""
|
||||||
bot Keksdose bot
|
bot sh-edraft.de Discord bot
|
||||||
~~~~~~~~~~~~~~~~~~~
|
~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
Discord bot for the Keksdose discord Server
|
Discord bot for customers of sh-edraft.de
|
||||||
|
|
||||||
:copyright: (c) 2022 - 2023 sh-edraft.de
|
:copyright: (c) 2022 - 2023 sh-edraft.de
|
||||||
:license: MIT, see LICENSE for more details.
|
:license: MIT, see LICENSE for more details.
|
||||||
@@ -15,7 +15,7 @@ __title__ = "bot_core.logging"
|
|||||||
__author__ = "Sven Heidemann"
|
__author__ = "Sven Heidemann"
|
||||||
__license__ = "MIT"
|
__license__ = "MIT"
|
||||||
__copyright__ = "Copyright (c) 2022 - 2023 sh-edraft.de"
|
__copyright__ = "Copyright (c) 2022 - 2023 sh-edraft.de"
|
||||||
__version__ = "1.1.6"
|
__version__ = "1.1.10"
|
||||||
|
|
||||||
from collections import namedtuple
|
from collections import namedtuple
|
||||||
|
|
||||||
@@ -23,4 +23,4 @@ from collections import namedtuple
|
|||||||
# imports
|
# imports
|
||||||
|
|
||||||
VersionInfo = namedtuple("VersionInfo", "major minor micro")
|
VersionInfo = namedtuple("VersionInfo", "major minor micro")
|
||||||
version_info = VersionInfo(major="1", minor="1", micro="6")
|
version_info = VersionInfo(major="1", minor="1", micro="10")
|
||||||
|
@@ -1,10 +1,10 @@
|
|||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
"""
|
"""
|
||||||
bot Keksdose bot
|
bot sh-edraft.de Discord bot
|
||||||
~~~~~~~~~~~~~~~~~~~
|
~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
Discord bot for the Keksdose discord Server
|
Discord bot for customers of sh-edraft.de
|
||||||
|
|
||||||
:copyright: (c) 2022 - 2023 sh-edraft.de
|
:copyright: (c) 2022 - 2023 sh-edraft.de
|
||||||
:license: MIT, see LICENSE for more details.
|
:license: MIT, see LICENSE for more details.
|
||||||
@@ -15,7 +15,7 @@ __title__ = "bot_core.pipes"
|
|||||||
__author__ = "Sven Heidemann"
|
__author__ = "Sven Heidemann"
|
||||||
__license__ = "MIT"
|
__license__ = "MIT"
|
||||||
__copyright__ = "Copyright (c) 2022 - 2023 sh-edraft.de"
|
__copyright__ = "Copyright (c) 2022 - 2023 sh-edraft.de"
|
||||||
__version__ = "1.1.6"
|
__version__ = "1.1.10"
|
||||||
|
|
||||||
from collections import namedtuple
|
from collections import namedtuple
|
||||||
|
|
||||||
@@ -23,4 +23,4 @@ from collections import namedtuple
|
|||||||
# imports
|
# imports
|
||||||
|
|
||||||
VersionInfo = namedtuple("VersionInfo", "major minor micro")
|
VersionInfo = namedtuple("VersionInfo", "major minor micro")
|
||||||
version_info = VersionInfo(major="1", minor="1", micro="6")
|
version_info = VersionInfo(major="1", minor="1", micro="10")
|
||||||
|
@@ -1,10 +1,10 @@
|
|||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
"""
|
"""
|
||||||
bot Keksdose bot
|
bot sh-edraft.de Discord bot
|
||||||
~~~~~~~~~~~~~~~~~~~
|
~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
Discord bot for the Keksdose discord Server
|
Discord bot for customers of sh-edraft.de
|
||||||
|
|
||||||
:copyright: (c) 2022 - 2023 sh-edraft.de
|
:copyright: (c) 2022 - 2023 sh-edraft.de
|
||||||
:license: MIT, see LICENSE for more details.
|
:license: MIT, see LICENSE for more details.
|
||||||
@@ -15,7 +15,7 @@ __title__ = "bot_core.service"
|
|||||||
__author__ = "Sven Heidemann"
|
__author__ = "Sven Heidemann"
|
||||||
__license__ = "MIT"
|
__license__ = "MIT"
|
||||||
__copyright__ = "Copyright (c) 2022 - 2023 sh-edraft.de"
|
__copyright__ = "Copyright (c) 2022 - 2023 sh-edraft.de"
|
||||||
__version__ = "1.1.6"
|
__version__ = "1.1.10"
|
||||||
|
|
||||||
from collections import namedtuple
|
from collections import namedtuple
|
||||||
|
|
||||||
@@ -23,4 +23,4 @@ from collections import namedtuple
|
|||||||
# imports:
|
# imports:
|
||||||
|
|
||||||
VersionInfo = namedtuple("VersionInfo", "major minor micro")
|
VersionInfo = namedtuple("VersionInfo", "major minor micro")
|
||||||
version_info = VersionInfo(major="1", minor="1", micro="6")
|
version_info = VersionInfo(major="1", minor="1", micro="10")
|
||||||
|
@@ -228,7 +228,7 @@ class ClientUtilsService(ClientUtilsABC):
|
|||||||
return
|
return
|
||||||
|
|
||||||
default_role = member.guild.get_role(settings.default_role_id)
|
default_role = member.guild.get_role(settings.default_role_id)
|
||||||
if default_role in member.roles:
|
if default_role is None or default_role in member.roles:
|
||||||
return
|
return
|
||||||
|
|
||||||
await member.add_roles(default_role)
|
await member.add_roles(default_role)
|
||||||
|
@@ -7,8 +7,6 @@ from bot_data.abc.technician_config_repository_abc import TechnicianConfigReposi
|
|||||||
from bot_data.model.server import Server
|
from bot_data.model.server import Server
|
||||||
from bot_data.model.technician_config import TechnicianConfig
|
from bot_data.model.technician_config import TechnicianConfig
|
||||||
from bot_data.service.server_config_seeder import ServerConfigSeeder
|
from bot_data.service.server_config_seeder import ServerConfigSeeder
|
||||||
from bot_data.service.technician_config_seeder import TechnicianConfigSeeder
|
|
||||||
from modules.permission.abc.permission_service_abc import PermissionServiceABC
|
|
||||||
|
|
||||||
|
|
||||||
class ConfigService:
|
class ConfigService:
|
||||||
@@ -18,7 +16,6 @@ class ConfigService:
|
|||||||
services: ServiceProviderABC,
|
services: ServiceProviderABC,
|
||||||
technician_config_repo: TechnicianConfigRepositoryABC,
|
technician_config_repo: TechnicianConfigRepositoryABC,
|
||||||
server_config_repo: ServerConfigRepositoryABC,
|
server_config_repo: ServerConfigRepositoryABC,
|
||||||
tech_seeder: TechnicianConfigSeeder,
|
|
||||||
server_seeder: ServerConfigSeeder,
|
server_seeder: ServerConfigSeeder,
|
||||||
):
|
):
|
||||||
self._config = config
|
self._config = config
|
||||||
@@ -26,13 +23,9 @@ class ConfigService:
|
|||||||
self._technician_config_repo = technician_config_repo
|
self._technician_config_repo = technician_config_repo
|
||||||
self._server_config_repo = server_config_repo
|
self._server_config_repo = server_config_repo
|
||||||
|
|
||||||
self._tech_seeder = tech_seeder
|
|
||||||
self._server_seeder = server_seeder
|
self._server_seeder = server_seeder
|
||||||
|
|
||||||
async def reload_technician_config(self):
|
def reload_technician_config(self):
|
||||||
if not self._technician_config_repo.does_technician_config_exists():
|
|
||||||
await self._tech_seeder.seed()
|
|
||||||
|
|
||||||
technician_config = self._technician_config_repo.get_technician_config()
|
technician_config = self._technician_config_repo.get_technician_config()
|
||||||
self._config.add_configuration(TechnicianConfig, technician_config)
|
self._config.add_configuration(TechnicianConfig, technician_config)
|
||||||
self._config.add_configuration(FeatureFlagsSettings, FeatureFlagsSettings(**technician_config.feature_flags))
|
self._config.add_configuration(FeatureFlagsSettings, FeatureFlagsSettings(**technician_config.feature_flags))
|
||||||
@@ -45,6 +38,3 @@ class ConfigService:
|
|||||||
self._config.add_configuration(
|
self._config.add_configuration(
|
||||||
f"{type(server_config).__name__}_{server_config.server.discord_id}", server_config
|
f"{type(server_config).__name__}_{server_config.server.discord_id}", server_config
|
||||||
)
|
)
|
||||||
|
|
||||||
permissions: PermissionServiceABC = self._services.get_service(PermissionServiceABC)
|
|
||||||
permissions.on_ready()
|
|
||||||
|
@@ -24,7 +24,6 @@ from bot_data.model.server_config import ServerConfig
|
|||||||
from bot_data.model.user import User
|
from bot_data.model.user import User
|
||||||
from bot_data.model.user_joined_server import UserJoinedServer
|
from bot_data.model.user_joined_server import UserJoinedServer
|
||||||
from bot_data.model.user_joined_voice_channel import UserJoinedVoiceChannel
|
from bot_data.model.user_joined_voice_channel import UserJoinedVoiceChannel
|
||||||
from bot_data.service.seeder_service import SeederService
|
|
||||||
from bot_data.service.user_repository_service import ServerRepositoryABC
|
from bot_data.service.user_repository_service import ServerRepositoryABC
|
||||||
from modules.achievements.achievement_service import AchievementService
|
from modules.achievements.achievement_service import AchievementService
|
||||||
|
|
||||||
@@ -34,7 +33,6 @@ class DataIntegrityService:
|
|||||||
self,
|
self,
|
||||||
config: ConfigurationABC,
|
config: ConfigurationABC,
|
||||||
logger: DatabaseLogger,
|
logger: DatabaseLogger,
|
||||||
seeder: SeederService,
|
|
||||||
bot: DiscordBotServiceABC,
|
bot: DiscordBotServiceABC,
|
||||||
db_context: DatabaseContextABC,
|
db_context: DatabaseContextABC,
|
||||||
server_repo: ServerRepositoryABC,
|
server_repo: ServerRepositoryABC,
|
||||||
@@ -51,7 +49,6 @@ class DataIntegrityService:
|
|||||||
self._config = config
|
self._config = config
|
||||||
|
|
||||||
self._logger = logger
|
self._logger = logger
|
||||||
self._seeder = seeder
|
|
||||||
self._bot = bot
|
self._bot = bot
|
||||||
self._db_context = db_context
|
self._db_context = db_context
|
||||||
self._servers = server_repo
|
self._servers = server_repo
|
||||||
|
@@ -1,10 +1,10 @@
|
|||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
"""
|
"""
|
||||||
bot Keksdose bot
|
bot sh-edraft.de Discord bot
|
||||||
~~~~~~~~~~~~~~~~~~~
|
~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
Discord bot for the Keksdose discord Server
|
Discord bot for customers of sh-edraft.de
|
||||||
|
|
||||||
:copyright: (c) 2022 - 2023 sh-edraft.de
|
:copyright: (c) 2022 - 2023 sh-edraft.de
|
||||||
:license: MIT, see LICENSE for more details.
|
:license: MIT, see LICENSE for more details.
|
||||||
@@ -15,7 +15,7 @@ __title__ = "bot_data"
|
|||||||
__author__ = "Sven Heidemann"
|
__author__ = "Sven Heidemann"
|
||||||
__license__ = "MIT"
|
__license__ = "MIT"
|
||||||
__copyright__ = "Copyright (c) 2022 - 2023 sh-edraft.de"
|
__copyright__ = "Copyright (c) 2022 - 2023 sh-edraft.de"
|
||||||
__version__ = "1.1.6"
|
__version__ = "1.1.10"
|
||||||
|
|
||||||
from collections import namedtuple
|
from collections import namedtuple
|
||||||
|
|
||||||
@@ -23,4 +23,4 @@ from collections import namedtuple
|
|||||||
# imports
|
# imports
|
||||||
|
|
||||||
VersionInfo = namedtuple("VersionInfo", "major minor micro")
|
VersionInfo = namedtuple("VersionInfo", "major minor micro")
|
||||||
version_info = VersionInfo(major="1", minor="1", micro="6")
|
version_info = VersionInfo(major="1", minor="1", micro="10")
|
||||||
|
@@ -1,10 +1,10 @@
|
|||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
"""
|
"""
|
||||||
bot Keksdose bot
|
bot sh-edraft.de Discord bot
|
||||||
~~~~~~~~~~~~~~~~~~~
|
~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
Discord bot for the Keksdose discord Server
|
Discord bot for customers of sh-edraft.de
|
||||||
|
|
||||||
:copyright: (c) 2022 - 2023 sh-edraft.de
|
:copyright: (c) 2022 - 2023 sh-edraft.de
|
||||||
:license: MIT, see LICENSE for more details.
|
:license: MIT, see LICENSE for more details.
|
||||||
@@ -15,7 +15,7 @@ __title__ = "bot_data.abc"
|
|||||||
__author__ = "Sven Heidemann"
|
__author__ = "Sven Heidemann"
|
||||||
__license__ = "MIT"
|
__license__ = "MIT"
|
||||||
__copyright__ = "Copyright (c) 2022 - 2023 sh-edraft.de"
|
__copyright__ = "Copyright (c) 2022 - 2023 sh-edraft.de"
|
||||||
__version__ = "1.1.6"
|
__version__ = "1.1.10"
|
||||||
|
|
||||||
from collections import namedtuple
|
from collections import namedtuple
|
||||||
|
|
||||||
@@ -23,4 +23,4 @@ from collections import namedtuple
|
|||||||
# imports
|
# imports
|
||||||
|
|
||||||
VersionInfo = namedtuple("VersionInfo", "major minor micro")
|
VersionInfo = namedtuple("VersionInfo", "major minor micro")
|
||||||
version_info = VersionInfo(major="1", minor="1", micro="6")
|
version_info = VersionInfo(major="1", minor="1", micro="10")
|
||||||
|
@@ -1,13 +1,20 @@
|
|||||||
|
import os
|
||||||
from abc import ABC, abstractmethod
|
from abc import ABC, abstractmethod
|
||||||
|
|
||||||
|
from cpl_core.dependency_injection import ServiceProviderABC
|
||||||
|
from mysql.connector.cursor import MySQLCursorBuffered
|
||||||
|
|
||||||
|
from bot_data.db_context import DBContext
|
||||||
|
|
||||||
|
|
||||||
class MigrationABC(ABC):
|
class MigrationABC(ABC):
|
||||||
name = None
|
name = None
|
||||||
prio = 0
|
prio = 0
|
||||||
|
|
||||||
@abstractmethod
|
@abstractmethod
|
||||||
def __init__(self):
|
@ServiceProviderABC.inject
|
||||||
pass
|
def __init__(self, db: DBContext):
|
||||||
|
self._cursor: MySQLCursorBuffered = db.cursor
|
||||||
|
|
||||||
@abstractmethod
|
@abstractmethod
|
||||||
def upgrade(self):
|
def upgrade(self):
|
||||||
@@ -16,3 +23,10 @@ class MigrationABC(ABC):
|
|||||||
@abstractmethod
|
@abstractmethod
|
||||||
def downgrade(self):
|
def downgrade(self):
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
def _exec(self, self_file: str, file: str):
|
||||||
|
path = f"{os.path.dirname(os.path.realpath(self_file))}/db_history_scripts"
|
||||||
|
sql = open(f"{path}/{file}").read()
|
||||||
|
|
||||||
|
for statement in sql.split("\n\n"):
|
||||||
|
self._cursor.execute(statement + ";")
|
||||||
|
39
kdb-bot/src/bot_data/abc/short_role_name_repository_abc.py
Normal file
39
kdb-bot/src/bot_data/abc/short_role_name_repository_abc.py
Normal file
@@ -0,0 +1,39 @@
|
|||||||
|
from abc import ABC, abstractmethod
|
||||||
|
|
||||||
|
from cpl_query.extension import List
|
||||||
|
|
||||||
|
from bot_data.model.short_role_name import ShortRoleName
|
||||||
|
|
||||||
|
|
||||||
|
class ShortRoleNameRepositoryABC(ABC):
|
||||||
|
@abstractmethod
|
||||||
|
def __init__(self):
|
||||||
|
pass
|
||||||
|
|
||||||
|
@abstractmethod
|
||||||
|
def get_short_role_names(self) -> List[ShortRoleName]:
|
||||||
|
pass
|
||||||
|
|
||||||
|
@abstractmethod
|
||||||
|
def get_short_role_name_by_id(self, id: int) -> ShortRoleName:
|
||||||
|
pass
|
||||||
|
|
||||||
|
@abstractmethod
|
||||||
|
def find_short_role_names_by_role_id(self, role_id: int) -> List[ShortRoleName]:
|
||||||
|
pass
|
||||||
|
|
||||||
|
@abstractmethod
|
||||||
|
def get_short_role_names_by_server_id(self, id: int) -> List[ShortRoleName]:
|
||||||
|
pass
|
||||||
|
|
||||||
|
@abstractmethod
|
||||||
|
def add_short_role_name(self, short_role_name: ShortRoleName):
|
||||||
|
pass
|
||||||
|
|
||||||
|
@abstractmethod
|
||||||
|
def update_short_role_name(self, short_role_name: ShortRoleName):
|
||||||
|
pass
|
||||||
|
|
||||||
|
@abstractmethod
|
||||||
|
def delete_short_role_name(self, short_role_name: ShortRoleName):
|
||||||
|
pass
|
@@ -4,7 +4,7 @@
|
|||||||
"Version": {
|
"Version": {
|
||||||
"Major": "1",
|
"Major": "1",
|
||||||
"Minor": "1",
|
"Minor": "1",
|
||||||
"Micro": "6"
|
"Micro": "10"
|
||||||
},
|
},
|
||||||
"Author": "Sven Heidemann",
|
"Author": "Sven Heidemann",
|
||||||
"AuthorEmail": "sven.heidemann@sh-edraft.de",
|
"AuthorEmail": "sven.heidemann@sh-edraft.de",
|
||||||
|
@@ -16,6 +16,7 @@ from bot_data.abc.known_user_repository_abc import KnownUserRepositoryABC
|
|||||||
from bot_data.abc.level_repository_abc import LevelRepositoryABC
|
from bot_data.abc.level_repository_abc import LevelRepositoryABC
|
||||||
from bot_data.abc.server_config_repository_abc import ServerConfigRepositoryABC
|
from bot_data.abc.server_config_repository_abc import ServerConfigRepositoryABC
|
||||||
from bot_data.abc.server_repository_abc import ServerRepositoryABC
|
from bot_data.abc.server_repository_abc import ServerRepositoryABC
|
||||||
|
from bot_data.abc.short_role_name_repository_abc import ShortRoleNameRepositoryABC
|
||||||
from bot_data.abc.technician_config_repository_abc import TechnicianConfigRepositoryABC
|
from bot_data.abc.technician_config_repository_abc import TechnicianConfigRepositoryABC
|
||||||
from bot_data.abc.user_game_ident_repository_abc import UserGameIdentRepositoryABC
|
from bot_data.abc.user_game_ident_repository_abc import UserGameIdentRepositoryABC
|
||||||
from bot_data.abc.user_joined_game_server_repository_abc import UserJoinedGameServerRepositoryABC
|
from bot_data.abc.user_joined_game_server_repository_abc import UserJoinedGameServerRepositoryABC
|
||||||
@@ -41,6 +42,7 @@ from bot_data.service.seeder_service import SeederService
|
|||||||
from bot_data.service.server_config_repository_service import ServerConfigRepositoryService
|
from bot_data.service.server_config_repository_service import ServerConfigRepositoryService
|
||||||
from bot_data.service.server_config_seeder import ServerConfigSeeder
|
from bot_data.service.server_config_seeder import ServerConfigSeeder
|
||||||
from bot_data.service.server_repository_service import ServerRepositoryService
|
from bot_data.service.server_repository_service import ServerRepositoryService
|
||||||
|
from bot_data.service.short_role_name_repository_service import ShortRoleNameRepositoryService
|
||||||
from bot_data.service.technician_config_repository_service import TechnicianConfigRepositoryService
|
from bot_data.service.technician_config_repository_service import TechnicianConfigRepositoryService
|
||||||
from bot_data.service.technician_config_seeder import TechnicianConfigSeeder
|
from bot_data.service.technician_config_seeder import TechnicianConfigSeeder
|
||||||
from bot_data.service.user_game_ident_repository_service import UserGameIdentRepositoryService
|
from bot_data.service.user_game_ident_repository_service import UserGameIdentRepositoryService
|
||||||
@@ -89,6 +91,7 @@ class DataModule(ModuleABC):
|
|||||||
services.add_transient(AchievementRepositoryABC, AchievementRepositoryService)
|
services.add_transient(AchievementRepositoryABC, AchievementRepositoryService)
|
||||||
services.add_transient(TechnicianConfigRepositoryABC, TechnicianConfigRepositoryService)
|
services.add_transient(TechnicianConfigRepositoryABC, TechnicianConfigRepositoryService)
|
||||||
services.add_transient(ServerConfigRepositoryABC, ServerConfigRepositoryService)
|
services.add_transient(ServerConfigRepositoryABC, ServerConfigRepositoryService)
|
||||||
|
services.add_transient(ShortRoleNameRepositoryABC, ShortRoleNameRepositoryService)
|
||||||
|
|
||||||
services.add_transient(SeederService)
|
services.add_transient(SeederService)
|
||||||
services.add_transient(DataSeederABC, TechnicianConfigSeeder)
|
services.add_transient(DataSeederABC, TechnicianConfigSeeder)
|
||||||
|
@@ -1,10 +1,10 @@
|
|||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
"""
|
"""
|
||||||
bot Keksdose bot
|
bot sh-edraft.de Discord bot
|
||||||
~~~~~~~~~~~~~~~~~~~
|
~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
Discord bot for the Keksdose discord Server
|
Discord bot for customers of sh-edraft.de
|
||||||
|
|
||||||
:copyright: (c) 2022 - 2023 sh-edraft.de
|
:copyright: (c) 2022 - 2023 sh-edraft.de
|
||||||
:license: MIT, see LICENSE for more details.
|
:license: MIT, see LICENSE for more details.
|
||||||
@@ -15,7 +15,7 @@ __title__ = "bot_data.migration"
|
|||||||
__author__ = "Sven Heidemann"
|
__author__ = "Sven Heidemann"
|
||||||
__license__ = "MIT"
|
__license__ = "MIT"
|
||||||
__copyright__ = "Copyright (c) 2022 - 2023 sh-edraft.de"
|
__copyright__ = "Copyright (c) 2022 - 2023 sh-edraft.de"
|
||||||
__version__ = "1.1.6"
|
__version__ = "1.1.10"
|
||||||
|
|
||||||
from collections import namedtuple
|
from collections import namedtuple
|
||||||
|
|
||||||
@@ -23,4 +23,4 @@ from collections import namedtuple
|
|||||||
# imports
|
# imports
|
||||||
|
|
||||||
VersionInfo = namedtuple("VersionInfo", "major minor micro")
|
VersionInfo = namedtuple("VersionInfo", "major minor micro")
|
||||||
version_info = VersionInfo(major="1", minor="1", micro="6")
|
version_info = VersionInfo(major="1", minor="1", micro="10")
|
||||||
|
@@ -1,5 +1,3 @@
|
|||||||
import os
|
|
||||||
|
|
||||||
from bot_core.logging.database_logger import DatabaseLogger
|
from bot_core.logging.database_logger import DatabaseLogger
|
||||||
from bot_data.abc.migration_abc import MigrationABC
|
from bot_data.abc.migration_abc import MigrationABC
|
||||||
from bot_data.db_context import DBContext
|
from bot_data.db_context import DBContext
|
||||||
@@ -12,26 +10,18 @@ class ConfigMigration(MigrationABC):
|
|||||||
MigrationABC.__init__(self)
|
MigrationABC.__init__(self)
|
||||||
self._logger = logger
|
self._logger = logger
|
||||||
self._db = db
|
self._db = db
|
||||||
self._cursor = db.cursor
|
|
||||||
|
|
||||||
def _exec(self, file: str):
|
|
||||||
path = f"{os.path.dirname(os.path.realpath(__file__))}/db_history_scripts"
|
|
||||||
sql = open(f"{path}/{file}").read()
|
|
||||||
|
|
||||||
for statement in sql.split("\n\n"):
|
|
||||||
self._cursor.execute(statement + ";")
|
|
||||||
|
|
||||||
def upgrade(self):
|
def upgrade(self):
|
||||||
self._logger.debug(__name__, "Running upgrade")
|
self._logger.debug(__name__, "Running upgrade")
|
||||||
self._server_upgrade()
|
self._server_upgrade()
|
||||||
self._technician_upgrade()
|
self._technician_upgrade()
|
||||||
|
|
||||||
self._exec("config/server.sql")
|
self._exec(__file__, "config/server.sql")
|
||||||
self._exec("config/server_afk_channels.sql")
|
self._exec(__file__, "config/server_afk_channels.sql")
|
||||||
self._exec("config/server_team_roles.sql")
|
self._exec(__file__, "config/server_team_roles.sql")
|
||||||
self._exec("config/technician.sql")
|
self._exec(__file__, "config/technician.sql")
|
||||||
self._exec("config/technician_ids.sql")
|
self._exec(__file__, "config/technician_ids.sql")
|
||||||
self._exec("config/technician_ping_urls.sql")
|
self._exec(__file__, "config/technician_ping_urls.sql")
|
||||||
|
|
||||||
def _server_upgrade(self):
|
def _server_upgrade(self):
|
||||||
self._cursor.execute(
|
self._cursor.execute(
|
||||||
|
@@ -1,5 +1,3 @@
|
|||||||
import os
|
|
||||||
|
|
||||||
from bot_core.logging.database_logger import DatabaseLogger
|
from bot_core.logging.database_logger import DatabaseLogger
|
||||||
from bot_data.abc.migration_abc import MigrationABC
|
from bot_data.abc.migration_abc import MigrationABC
|
||||||
from bot_data.db_context import DBContext
|
from bot_data.db_context import DBContext
|
||||||
@@ -15,33 +13,26 @@ class DBHistoryMigration(MigrationABC):
|
|||||||
self._db = db
|
self._db = db
|
||||||
self._cursor = db.cursor
|
self._cursor = db.cursor
|
||||||
|
|
||||||
def _exec(self, file: str):
|
|
||||||
path = f"{os.path.dirname(os.path.realpath(__file__))}/db_history_scripts"
|
|
||||||
sql = open(f"{path}/{file}").read()
|
|
||||||
|
|
||||||
for statement in sql.split("\n\n"):
|
|
||||||
self._cursor.execute(statement + ";")
|
|
||||||
|
|
||||||
def upgrade(self):
|
def upgrade(self):
|
||||||
self._logger.debug(__name__, "Running upgrade")
|
self._logger.debug(__name__, "Running upgrade")
|
||||||
|
|
||||||
self._exec("api_keys.sql")
|
self._exec(__file__, "api_keys.sql")
|
||||||
self._exec("auth_users.sql")
|
self._exec(__file__, "auth_users.sql")
|
||||||
self._exec("auth_user_users_relation.sql")
|
self._exec(__file__, "auth_user_users_relation.sql")
|
||||||
self._exec("auto_role_rules.sql")
|
self._exec(__file__, "auto_role_rules.sql")
|
||||||
self._exec("auto_roles.sql")
|
self._exec(__file__, "auto_roles.sql")
|
||||||
self._exec("clients.sql")
|
self._exec(__file__, "clients.sql")
|
||||||
self._exec("game_servers.sql")
|
self._exec(__file__, "game_servers.sql")
|
||||||
self._exec("known_users.sql")
|
self._exec(__file__, "known_users.sql")
|
||||||
self._exec("levels.sql")
|
self._exec(__file__, "levels.sql")
|
||||||
self._exec("servers.sql")
|
self._exec(__file__, "servers.sql")
|
||||||
self._exec("user_game_idents.sql")
|
self._exec(__file__, "user_game_idents.sql")
|
||||||
self._exec("user_joined_game_servers.sql")
|
self._exec(__file__, "user_joined_game_servers.sql")
|
||||||
self._exec("user_joined_servers.sql")
|
self._exec(__file__, "user_joined_servers.sql")
|
||||||
self._exec("user_joined_voice_channel.sql")
|
self._exec(__file__, "user_joined_voice_channel.sql")
|
||||||
self._exec("user_message_count_per_hour.sql")
|
self._exec(__file__, "user_message_count_per_hour.sql")
|
||||||
self._exec("users.sql")
|
self._exec(__file__, "users.sql")
|
||||||
self._exec("user_warnings.sql")
|
self._exec(__file__, "user_warnings.sql")
|
||||||
|
|
||||||
self._logger.debug(__name__, "Finished history upgrade")
|
self._logger.debug(__name__, "Finished history upgrade")
|
||||||
|
|
||||||
|
@@ -14,6 +14,9 @@ CREATE TABLE IF NOT EXISTS `CFG_ServerHistory`
|
|||||||
`HelpVoiceChannelId` BIGINT NOT NULL,
|
`HelpVoiceChannelId` BIGINT NOT NULL,
|
||||||
`TeamChannelId` BIGINT NOT NULL,
|
`TeamChannelId` BIGINT NOT NULL,
|
||||||
`LoginMessageChannelId` BIGINT NOT NULL,
|
`LoginMessageChannelId` BIGINT NOT NULL,
|
||||||
|
`DefaultRoleId` BIGINT NULL,
|
||||||
|
`ShortRoleNameSetOnlyHighest` BOOLEAN NOT NULL DEFAULT FALSE,
|
||||||
|
`FeatureFlags` JSON NULL DEFAULT ('{}'),
|
||||||
`ServerId` BIGINT NOT NULL,
|
`ServerId` BIGINT NOT NULL,
|
||||||
`Deleted` BOOL DEFAULT FALSE,
|
`Deleted` BOOL DEFAULT FALSE,
|
||||||
`DateFrom` DATETIME(6) NOT NULL,
|
`DateFrom` DATETIME(6) NOT NULL,
|
||||||
@@ -27,8 +30,7 @@ CREATE TRIGGER `TR_CFG_ServerUpdate`
|
|||||||
ON `CFG_Server`
|
ON `CFG_Server`
|
||||||
FOR EACH ROW
|
FOR EACH ROW
|
||||||
BEGIN
|
BEGIN
|
||||||
INSERT INTO `CFG_ServerHistory` (
|
INSERT INTO `CFG_ServerHistory` (`Id`,
|
||||||
`Id`,
|
|
||||||
`MessageDeleteTimer`,
|
`MessageDeleteTimer`,
|
||||||
`NotificationChatId`,
|
`NotificationChatId`,
|
||||||
`MaxVoiceStateHours`,
|
`MaxVoiceStateHours`,
|
||||||
@@ -42,12 +44,13 @@ BEGIN
|
|||||||
`HelpVoiceChannelId`,
|
`HelpVoiceChannelId`,
|
||||||
`TeamChannelId`,
|
`TeamChannelId`,
|
||||||
`LoginMessageChannelId`,
|
`LoginMessageChannelId`,
|
||||||
|
`DefaultRoleId`,
|
||||||
|
`ShortRoleNameSetOnlyHighest`,
|
||||||
|
`FeatureFlags`,
|
||||||
`ServerId`,
|
`ServerId`,
|
||||||
`DateFrom`,
|
`DateFrom`,
|
||||||
`DateTo`
|
`DateTo`)
|
||||||
)
|
VALUES (OLD.Id,
|
||||||
VALUES (
|
|
||||||
OLD.Id,
|
|
||||||
OLD.MessageDeleteTimer,
|
OLD.MessageDeleteTimer,
|
||||||
OLD.NotificationChatId,
|
OLD.NotificationChatId,
|
||||||
OLD.MaxVoiceStateHours,
|
OLD.MaxVoiceStateHours,
|
||||||
@@ -61,10 +64,12 @@ BEGIN
|
|||||||
OLD.HelpVoiceChannelId,
|
OLD.HelpVoiceChannelId,
|
||||||
OLD.TeamChannelId,
|
OLD.TeamChannelId,
|
||||||
OLD.LoginMessageChannelId,
|
OLD.LoginMessageChannelId,
|
||||||
|
OLD.DefaultRoleId,
|
||||||
|
OLD.ShortRoleNameSetOnlyHighest,
|
||||||
|
OLD.FeatureFlags,
|
||||||
OLD.ServerId,
|
OLD.ServerId,
|
||||||
OLD.LastModifiedAt,
|
OLD.LastModifiedAt,
|
||||||
CURRENT_TIMESTAMP(6)
|
CURRENT_TIMESTAMP(6));
|
||||||
);
|
|
||||||
END;
|
END;
|
||||||
|
|
||||||
DROP TRIGGER IF EXISTS `TR_CFG_ServerDelete`;
|
DROP TRIGGER IF EXISTS `TR_CFG_ServerDelete`;
|
||||||
@@ -74,8 +79,7 @@ CREATE TRIGGER `TR_CFG_ServerDelete`
|
|||||||
ON `CFG_Server`
|
ON `CFG_Server`
|
||||||
FOR EACH ROW
|
FOR EACH ROW
|
||||||
BEGIN
|
BEGIN
|
||||||
INSERT INTO `CFG_ServerHistory` (
|
INSERT INTO `CFG_ServerHistory` (`Id`,
|
||||||
`Id`,
|
|
||||||
`MessageDeleteTimer`,
|
`MessageDeleteTimer`,
|
||||||
`NotificationChatId`,
|
`NotificationChatId`,
|
||||||
`MaxVoiceStateHours`,
|
`MaxVoiceStateHours`,
|
||||||
@@ -89,13 +93,14 @@ BEGIN
|
|||||||
`HelpVoiceChannelId`,
|
`HelpVoiceChannelId`,
|
||||||
`TeamChannelId`,
|
`TeamChannelId`,
|
||||||
`LoginMessageChannelId`,
|
`LoginMessageChannelId`,
|
||||||
|
`DefaultRoleId`,
|
||||||
|
`ShortRoleNameSetOnlyHighest`,
|
||||||
`ServerId`,
|
`ServerId`,
|
||||||
|
`FeatureFlags`,
|
||||||
`Deleted`,
|
`Deleted`,
|
||||||
`DateFrom`,
|
`DateFrom`,
|
||||||
`DateTo`
|
`DateTo`)
|
||||||
)
|
VALUES (OLD.Id,
|
||||||
VALUES (
|
|
||||||
OLD.Id,
|
|
||||||
OLD.MessageDeleteTimer,
|
OLD.MessageDeleteTimer,
|
||||||
OLD.NotificationChatId,
|
OLD.NotificationChatId,
|
||||||
OLD.MaxVoiceStateHours,
|
OLD.MaxVoiceStateHours,
|
||||||
@@ -109,9 +114,11 @@ BEGIN
|
|||||||
OLD.HelpVoiceChannelId,
|
OLD.HelpVoiceChannelId,
|
||||||
OLD.TeamChannelId,
|
OLD.TeamChannelId,
|
||||||
OLD.LoginMessageChannelId,
|
OLD.LoginMessageChannelId,
|
||||||
|
OLD.DefaultRoleId,
|
||||||
|
OLD.ShortRoleNameSetOnlyHighest,
|
||||||
|
OLD.FeatureFlags,
|
||||||
OLD.ServerId,
|
OLD.ServerId,
|
||||||
TRUE,
|
TRUE,
|
||||||
OLD.LastModifiedAt,
|
OLD.LastModifiedAt,
|
||||||
CURRENT_TIMESTAMP(6)
|
CURRENT_TIMESTAMP(6));
|
||||||
);
|
|
||||||
END;
|
END;
|
@@ -5,6 +5,7 @@ CREATE TABLE IF NOT EXISTS `CFG_TechnicianHistory`
|
|||||||
`WaitForRestart` BIGINT NOT NULL DEFAULT 8,
|
`WaitForRestart` BIGINT NOT NULL DEFAULT 8,
|
||||||
`WaitForShutdown` BIGINT NOT NULL DEFAULT 8,
|
`WaitForShutdown` BIGINT NOT NULL DEFAULT 8,
|
||||||
`CacheMaxMessages` BIGINT NOT NULL DEFAULT 1000000,
|
`CacheMaxMessages` BIGINT NOT NULL DEFAULT 1000000,
|
||||||
|
`FeatureFlags` JSON NULL DEFAULT ('{}'),
|
||||||
`Deleted` BOOL DEFAULT FALSE,
|
`Deleted` BOOL DEFAULT FALSE,
|
||||||
`DateFrom` DATETIME(6) NOT NULL,
|
`DateFrom` DATETIME(6) NOT NULL,
|
||||||
`DateTo` DATETIME(6) NOT NULL
|
`DateTo` DATETIME(6) NOT NULL
|
||||||
@@ -17,24 +18,22 @@ CREATE TRIGGER `TR_CFG_TechnicianUpdate`
|
|||||||
ON `CFG_Technician`
|
ON `CFG_Technician`
|
||||||
FOR EACH ROW
|
FOR EACH ROW
|
||||||
BEGIN
|
BEGIN
|
||||||
INSERT INTO `CFG_TechnicianHistory` (
|
INSERT INTO `CFG_TechnicianHistory` (`Id`,
|
||||||
`Id`,
|
|
||||||
`HelpCommandReferenceUrl`,
|
`HelpCommandReferenceUrl`,
|
||||||
`WaitForRestart`,
|
`WaitForRestart`,
|
||||||
`WaitForShutdown`,
|
`WaitForShutdown`,
|
||||||
`CacheMaxMessages`,
|
`CacheMaxMessages`,
|
||||||
|
`FeatureFlags`,
|
||||||
`DateFrom`,
|
`DateFrom`,
|
||||||
`DateTo`
|
`DateTo`)
|
||||||
)
|
VALUES (OLD.Id,
|
||||||
VALUES (
|
|
||||||
OLD.Id,
|
|
||||||
OLD.HelpCommandReferenceUrl,
|
OLD.HelpCommandReferenceUrl,
|
||||||
OLD.WaitForRestart,
|
OLD.WaitForRestart,
|
||||||
OLD.WaitForShutdown,
|
OLD.WaitForShutdown,
|
||||||
OLD.CacheMaxMessages,
|
OLD.CacheMaxMessages,
|
||||||
|
OLD.FeatureFlags,
|
||||||
OLD.LastModifiedAt,
|
OLD.LastModifiedAt,
|
||||||
CURRENT_TIMESTAMP(6)
|
CURRENT_TIMESTAMP(6));
|
||||||
);
|
|
||||||
END;
|
END;
|
||||||
|
|
||||||
DROP TRIGGER IF EXISTS `TR_CFG_TechnicianDelete`;
|
DROP TRIGGER IF EXISTS `TR_CFG_TechnicianDelete`;
|
||||||
@@ -44,24 +43,22 @@ CREATE TRIGGER `TR_CFG_TechnicianDelete`
|
|||||||
ON `CFG_Technician`
|
ON `CFG_Technician`
|
||||||
FOR EACH ROW
|
FOR EACH ROW
|
||||||
BEGIN
|
BEGIN
|
||||||
INSERT INTO `CFG_TechnicianHistory` (
|
INSERT INTO `CFG_TechnicianHistory` (`Id`,
|
||||||
`Id`,
|
|
||||||
`HelpCommandReferenceUrl`,
|
`HelpCommandReferenceUrl`,
|
||||||
`WaitForRestart`,
|
`WaitForRestart`,
|
||||||
`WaitForShutdown`,
|
`WaitForShutdown`,
|
||||||
`CacheMaxMessages`,
|
`CacheMaxMessages`,
|
||||||
|
`FeatureFlags`,
|
||||||
`Deleted`,
|
`Deleted`,
|
||||||
`DateFrom`,
|
`DateFrom`,
|
||||||
`DateTo`
|
`DateTo`)
|
||||||
)
|
VALUES (OLD.Id,
|
||||||
VALUES (
|
|
||||||
OLD.Id,
|
|
||||||
OLD.HelpCommandReferenceUrl,
|
OLD.HelpCommandReferenceUrl,
|
||||||
OLD.WaitForRestart,
|
OLD.WaitForRestart,
|
||||||
OLD.WaitForShutdown,
|
OLD.WaitForShutdown,
|
||||||
OLD.CacheMaxMessages,
|
OLD.CacheMaxMessages,
|
||||||
|
OLD.FeatureFlags,
|
||||||
TRUE,
|
TRUE,
|
||||||
OLD.LastModifiedAt,
|
OLD.LastModifiedAt,
|
||||||
CURRENT_TIMESTAMP(6)
|
CURRENT_TIMESTAMP(6));
|
||||||
);
|
|
||||||
END;
|
END;
|
@@ -0,0 +1,38 @@
|
|||||||
|
CREATE TABLE IF NOT EXISTS `ShortRoleNamesHistory`
|
||||||
|
(
|
||||||
|
`Id` BIGINT(20) NOT NULL,
|
||||||
|
`ShortName` VARCHAR(64) DEFAULT NULL,
|
||||||
|
`DiscordRoleId` BIGINT(20) NOT NULL,
|
||||||
|
`Position` ENUM ('Before', 'After') NOT NULL,
|
||||||
|
`ServerId` BIGINT(20) DEFAULT NULL,
|
||||||
|
`Deleted` BOOL DEFAULT FALSE,
|
||||||
|
`DateFrom` DATETIME(6) NOT NULL,
|
||||||
|
`DateTo` DATETIME(6) NOT NULL
|
||||||
|
);
|
||||||
|
|
||||||
|
DROP TRIGGER IF EXISTS `TR_ShortRoleNamesUpdate`;
|
||||||
|
|
||||||
|
CREATE TRIGGER `TR_ShortRoleNamesUpdate`
|
||||||
|
AFTER UPDATE
|
||||||
|
ON `ShortRoleNames`
|
||||||
|
FOR EACH ROW
|
||||||
|
BEGIN
|
||||||
|
INSERT INTO `ShortRoleNamesHistory` (`Id`, `ShortName`, `DiscordRoleId`, `Position`, `ServerId`, `DateFrom`,
|
||||||
|
`DateTo`)
|
||||||
|
VALUES (OLD.Id, OLD.ShortName, OLD.DiscordRoleId, OLD.Position, OLD.ServerId, OLD.LastModifiedAt,
|
||||||
|
CURRENT_TIMESTAMP(6));
|
||||||
|
END;
|
||||||
|
|
||||||
|
DROP TRIGGER IF EXISTS `TR_ShortRoleNamesDelete`;
|
||||||
|
|
||||||
|
CREATE TRIGGER `TR_ShortRoleNamesDelete`
|
||||||
|
AFTER DELETE
|
||||||
|
ON `ShortRoleNames`
|
||||||
|
FOR EACH ROW
|
||||||
|
BEGIN
|
||||||
|
INSERT INTO `ShortRoleNamesHistory` (`Id`, `ShortName`, `DiscordRoleId`, `Position`, `ServerId`, `Deleted`,
|
||||||
|
`DateFrom`,
|
||||||
|
`DateTo`)
|
||||||
|
VALUES (OLD.Id, OLD.ShortName, OLD.DiscordRoleId, OLD.Position, OLD.ServerId, TRUE, OLD.LastModifiedAt,
|
||||||
|
CURRENT_TIMESTAMP(6));
|
||||||
|
END;
|
51
kdb-bot/src/bot_data/migration/fix_updates_migration.py
Normal file
51
kdb-bot/src/bot_data/migration/fix_updates_migration.py
Normal file
@@ -0,0 +1,51 @@
|
|||||||
|
from bot_core.logging.database_logger import DatabaseLogger
|
||||||
|
from bot_data.abc.migration_abc import MigrationABC
|
||||||
|
from bot_data.db_context import DBContext
|
||||||
|
|
||||||
|
|
||||||
|
class FixUpdatesMigration(MigrationABC):
|
||||||
|
name = "1.1.7_FixUpdatesMigration"
|
||||||
|
|
||||||
|
def __init__(self, logger: DatabaseLogger, db: DBContext):
|
||||||
|
MigrationABC.__init__(self)
|
||||||
|
self._logger = logger
|
||||||
|
self._db = db
|
||||||
|
self._cursor = db.cursor
|
||||||
|
|
||||||
|
def upgrade(self):
|
||||||
|
self._logger.debug(__name__, "Running upgrade")
|
||||||
|
|
||||||
|
self._cursor.execute(
|
||||||
|
str(
|
||||||
|
f"""
|
||||||
|
ALTER TABLE CFG_ServerHistory
|
||||||
|
ADD DefaultRoleId BIGINT NULL AFTER LoginMessageChannelId;
|
||||||
|
"""
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
self._cursor.execute(
|
||||||
|
str(
|
||||||
|
"""ALTER TABLE CFG_TechnicianHistory ADD FeatureFlags JSON NULL DEFAULT ('{}') AFTER CacheMaxMessages;"""
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
self._cursor.execute(
|
||||||
|
str(
|
||||||
|
"""ALTER TABLE CFG_ServerHistory ADD FeatureFlags JSON NULL DEFAULT ('{}') AFTER LoginMessageChannelId;"""
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
self._exec(__file__, "config/server.sql")
|
||||||
|
self._exec(__file__, "config/technician.sql")
|
||||||
|
|
||||||
|
def downgrade(self):
|
||||||
|
self._cursor.execute(
|
||||||
|
str(
|
||||||
|
f"""
|
||||||
|
ALTER TABLE CFG_ServerHistory DROP COLUMN DefaultRoleId;
|
||||||
|
"""
|
||||||
|
)
|
||||||
|
)
|
||||||
|
self._cursor.execute("ALTER TABLE CFG_TechnicianHistory DROP COLUMN FeatureFlags;")
|
||||||
|
self._cursor.execute("ALTER TABLE CFG_ServerHistory DROP COLUMN FeatureFlags;")
|
40
kdb-bot/src/bot_data/migration/short_role_name_migration.py
Normal file
40
kdb-bot/src/bot_data/migration/short_role_name_migration.py
Normal file
@@ -0,0 +1,40 @@
|
|||||||
|
from bot_core.logging.database_logger import DatabaseLogger
|
||||||
|
from bot_data.abc.migration_abc import MigrationABC
|
||||||
|
from bot_data.db_context import DBContext
|
||||||
|
|
||||||
|
|
||||||
|
class ShortRoleNameMigration(MigrationABC):
|
||||||
|
name = "1.1.7_ShortRoleNameMigration"
|
||||||
|
|
||||||
|
def __init__(self, logger: DatabaseLogger, db: DBContext):
|
||||||
|
MigrationABC.__init__(self)
|
||||||
|
self._logger = logger
|
||||||
|
self._db = db
|
||||||
|
self._cursor = db.cursor
|
||||||
|
|
||||||
|
def upgrade(self):
|
||||||
|
self._logger.debug(__name__, "Running upgrade")
|
||||||
|
|
||||||
|
self._cursor.execute(
|
||||||
|
str(
|
||||||
|
f"""
|
||||||
|
CREATE TABLE IF NOT EXISTS `ShortRoleNames` (
|
||||||
|
`Id` BIGINT NOT NULL AUTO_INCREMENT,
|
||||||
|
`ShortName` VARCHAR(255) NOT NULL,
|
||||||
|
`DiscordRoleId` BIGINT NOT NULL,
|
||||||
|
`Position` ENUM('before', 'after') NOT NULL,
|
||||||
|
`ServerId` BIGINT,
|
||||||
|
`CreatedAt` DATETIME(6) NULL DEFAULT CURRENT_TIMESTAMP(6),
|
||||||
|
`LastModifiedAt` DATETIME(6) NULL DEFAULT CURRENT_TIMESTAMP(6) ON UPDATE CURRENT_TIMESTAMP(6),
|
||||||
|
PRIMARY KEY(`Id`),
|
||||||
|
FOREIGN KEY (`ServerId`) REFERENCES `Servers`(`ServerId`)
|
||||||
|
);
|
||||||
|
"""
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
self._exec(__file__, "short_rule_names.sql")
|
||||||
|
|
||||||
|
def downgrade(self):
|
||||||
|
self._cursor.execute("DROP TABLE `ShortRoleNames`;")
|
||||||
|
self._cursor.execute("DROP TABLE `ShortRoleNamesHistory`;")
|
@@ -0,0 +1,51 @@
|
|||||||
|
from bot_core.logging.database_logger import DatabaseLogger
|
||||||
|
from bot_data.abc.migration_abc import MigrationABC
|
||||||
|
from bot_data.db_context import DBContext
|
||||||
|
|
||||||
|
|
||||||
|
class ShortRoleNameOnlyHighestMigration(MigrationABC):
|
||||||
|
name = "1.1.9_ShortRoleNameOnlyHighestMigration"
|
||||||
|
|
||||||
|
def __init__(self, logger: DatabaseLogger, db: DBContext):
|
||||||
|
MigrationABC.__init__(self)
|
||||||
|
self._logger = logger
|
||||||
|
self._db = db
|
||||||
|
self._cursor = db.cursor
|
||||||
|
|
||||||
|
def upgrade(self):
|
||||||
|
self._logger.debug(__name__, "Running upgrade")
|
||||||
|
|
||||||
|
self._cursor.execute(
|
||||||
|
str(
|
||||||
|
f"""
|
||||||
|
ALTER TABLE CFG_Server
|
||||||
|
ADD ShortRoleNameSetOnlyHighest BOOLEAN NOT NULL DEFAULT FALSE AFTER DefaultRoleId;
|
||||||
|
"""
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
self._cursor.execute(
|
||||||
|
str(
|
||||||
|
f"""
|
||||||
|
ALTER TABLE CFG_ServerHistory
|
||||||
|
ADD ShortRoleNameSetOnlyHighest BOOLEAN NOT NULL DEFAULT FALSE AFTER DefaultRoleId;
|
||||||
|
"""
|
||||||
|
)
|
||||||
|
)
|
||||||
|
self._exec(__file__, "config/server.sql")
|
||||||
|
|
||||||
|
def downgrade(self):
|
||||||
|
self._cursor.execute(
|
||||||
|
str(
|
||||||
|
f"""
|
||||||
|
ALTER TABLE CFG_Server DROP COLUMN ShortRoleNameSetOnlyHighest;
|
||||||
|
"""
|
||||||
|
)
|
||||||
|
)
|
||||||
|
self._cursor.execute(
|
||||||
|
str(
|
||||||
|
f"""
|
||||||
|
ALTER TABLE CFG_ServerHistory DROP COLUMN ShortRoleNameSetOnlyHighest;
|
||||||
|
"""
|
||||||
|
)
|
||||||
|
)
|
@@ -1,10 +1,10 @@
|
|||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
"""
|
"""
|
||||||
bot Keksdose bot
|
bot sh-edraft.de Discord bot
|
||||||
~~~~~~~~~~~~~~~~~~~
|
~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
Discord bot for the Keksdose discord Server
|
Discord bot for customers of sh-edraft.de
|
||||||
|
|
||||||
:copyright: (c) 2022 - 2023 sh-edraft.de
|
:copyright: (c) 2022 - 2023 sh-edraft.de
|
||||||
:license: MIT, see LICENSE for more details.
|
:license: MIT, see LICENSE for more details.
|
||||||
@@ -15,7 +15,7 @@ __title__ = "bot_data.model"
|
|||||||
__author__ = "Sven Heidemann"
|
__author__ = "Sven Heidemann"
|
||||||
__license__ = "MIT"
|
__license__ = "MIT"
|
||||||
__copyright__ = "Copyright (c) 2022 - 2023 sh-edraft.de"
|
__copyright__ = "Copyright (c) 2022 - 2023 sh-edraft.de"
|
||||||
__version__ = "1.1.6"
|
__version__ = "1.1.10"
|
||||||
|
|
||||||
from collections import namedtuple
|
from collections import namedtuple
|
||||||
|
|
||||||
@@ -23,4 +23,4 @@ from collections import namedtuple
|
|||||||
# imports
|
# imports
|
||||||
|
|
||||||
VersionInfo = namedtuple("VersionInfo", "major minor micro")
|
VersionInfo = namedtuple("VersionInfo", "major minor micro")
|
||||||
version_info = VersionInfo(major="1", minor="1", micro="6")
|
version_info = VersionInfo(major="1", minor="1", micro="10")
|
||||||
|
@@ -1,9 +1,11 @@
|
|||||||
import json
|
import json
|
||||||
from datetime import datetime
|
from datetime import datetime
|
||||||
|
from typing import Optional
|
||||||
|
|
||||||
from cpl_core.configuration import ConfigurationModelABC
|
from cpl_core.configuration import ConfigurationModelABC
|
||||||
from cpl_core.database import TableABC
|
from cpl_core.database import TableABC
|
||||||
from cpl_query.extension import List
|
from cpl_query.extension import List
|
||||||
|
from discord import Guild
|
||||||
|
|
||||||
from bot_core.configuration.feature_flags_enum import FeatureFlagsEnum
|
from bot_core.configuration.feature_flags_enum import FeatureFlagsEnum
|
||||||
from bot_data.model.server import Server
|
from bot_data.model.server import Server
|
||||||
@@ -26,7 +28,8 @@ class ServerConfig(TableABC, ConfigurationModelABC):
|
|||||||
help_voice_channel_id: int,
|
help_voice_channel_id: int,
|
||||||
team_channel_id: int,
|
team_channel_id: int,
|
||||||
login_message_channel_id: int,
|
login_message_channel_id: int,
|
||||||
default_role_id: int,
|
default_role_id: Optional[int],
|
||||||
|
short_role_name_only_set_highest_role: bool,
|
||||||
feature_flags: dict[FeatureFlagsEnum],
|
feature_flags: dict[FeatureFlagsEnum],
|
||||||
server: Server,
|
server: Server,
|
||||||
afk_channel_ids: List[int],
|
afk_channel_ids: List[int],
|
||||||
@@ -50,6 +53,8 @@ class ServerConfig(TableABC, ConfigurationModelABC):
|
|||||||
self._team_channel_id = team_channel_id
|
self._team_channel_id = team_channel_id
|
||||||
self._login_message_channel_id = login_message_channel_id
|
self._login_message_channel_id = login_message_channel_id
|
||||||
self._default_role_id = default_role_id
|
self._default_role_id = default_role_id
|
||||||
|
self._short_role_name_only_set_highest_role = short_role_name_only_set_highest_role
|
||||||
|
|
||||||
self._feature_flags = feature_flags
|
self._feature_flags = feature_flags
|
||||||
self._server = server
|
self._server = server
|
||||||
self._afk_channel_ids = afk_channel_ids
|
self._afk_channel_ids = afk_channel_ids
|
||||||
@@ -59,6 +64,30 @@ class ServerConfig(TableABC, ConfigurationModelABC):
|
|||||||
self._created_at = created_at if created_at is not None else self._created_at
|
self._created_at = created_at if created_at is not None else self._created_at
|
||||||
self._modified_at = modified_at if modified_at is not None else self._modified_at
|
self._modified_at = modified_at if modified_at is not None else self._modified_at
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def new(guild: Guild, server: Server) -> "ServerConfig":
|
||||||
|
return ServerConfig(
|
||||||
|
6,
|
||||||
|
guild.system_channel.id,
|
||||||
|
6,
|
||||||
|
1,
|
||||||
|
1,
|
||||||
|
20,
|
||||||
|
10,
|
||||||
|
10,
|
||||||
|
10,
|
||||||
|
guild.system_channel.id,
|
||||||
|
guild.system_channel.id,
|
||||||
|
guild.system_channel.id,
|
||||||
|
guild.system_channel.id,
|
||||||
|
None,
|
||||||
|
False,
|
||||||
|
{},
|
||||||
|
server,
|
||||||
|
List(int),
|
||||||
|
List(int),
|
||||||
|
)
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def id(self) -> int:
|
def id(self) -> int:
|
||||||
return self._id
|
return self._id
|
||||||
@@ -175,6 +204,14 @@ class ServerConfig(TableABC, ConfigurationModelABC):
|
|||||||
def default_role_id(self, value: int):
|
def default_role_id(self, value: int):
|
||||||
self._default_role_id = value
|
self._default_role_id = value
|
||||||
|
|
||||||
|
@property
|
||||||
|
def short_role_name_only_set_highest_role(self) -> bool:
|
||||||
|
return self._short_role_name_only_set_highest_role
|
||||||
|
|
||||||
|
@short_role_name_only_set_highest_role.setter
|
||||||
|
def short_role_name_only_set_highest_role(self, value: bool):
|
||||||
|
self._short_role_name_only_set_highest_role = value
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def feature_flags(self) -> dict[FeatureFlagsEnum]:
|
def feature_flags(self) -> dict[FeatureFlagsEnum]:
|
||||||
return self._feature_flags
|
return self._feature_flags
|
||||||
@@ -248,6 +285,7 @@ class ServerConfig(TableABC, ConfigurationModelABC):
|
|||||||
`TeamChannelId`,
|
`TeamChannelId`,
|
||||||
`LoginMessageChannelId`,
|
`LoginMessageChannelId`,
|
||||||
`DefaultRoleId`,
|
`DefaultRoleId`,
|
||||||
|
`ShortRoleNameSetOnlyHighest`,
|
||||||
`FeatureFlags`,
|
`FeatureFlags`,
|
||||||
`ServerId`
|
`ServerId`
|
||||||
) VALUES (
|
) VALUES (
|
||||||
@@ -264,7 +302,8 @@ class ServerConfig(TableABC, ConfigurationModelABC):
|
|||||||
{self._help_voice_channel_id},
|
{self._help_voice_channel_id},
|
||||||
{self._team_channel_id},
|
{self._team_channel_id},
|
||||||
{self._login_message_channel_id},
|
{self._login_message_channel_id},
|
||||||
{self._default_role_id},
|
{"NULL" if self._default_role_id is None else self._default_role_id},
|
||||||
|
{self._short_role_name_only_set_highest_role},
|
||||||
'{json.dumps(self._feature_flags)}',
|
'{json.dumps(self._feature_flags)}',
|
||||||
{self._server.id}
|
{self._server.id}
|
||||||
);
|
);
|
||||||
@@ -289,7 +328,8 @@ class ServerConfig(TableABC, ConfigurationModelABC):
|
|||||||
`HelpVoiceChannelId` = {self._help_voice_channel_id},
|
`HelpVoiceChannelId` = {self._help_voice_channel_id},
|
||||||
`TeamChannelId` = {self._team_channel_id},
|
`TeamChannelId` = {self._team_channel_id},
|
||||||
`LoginMessageChannelId` = {self._login_message_channel_id},
|
`LoginMessageChannelId` = {self._login_message_channel_id},
|
||||||
`DefaultRoleId` = {self._default_role_id},
|
`DefaultRoleId` = {"NULL" if self._default_role_id is None else self._default_role_id},
|
||||||
|
`ShortRoleNameSetOnlyHighest` = {self._short_role_name_only_set_highest_role},
|
||||||
`FeatureFlags` = '{json.dumps(self._feature_flags)}',
|
`FeatureFlags` = '{json.dumps(self._feature_flags)}',
|
||||||
`ServerId` = {self._server.id}
|
`ServerId` = {self._server.id}
|
||||||
WHERE `Id` = {self._id};
|
WHERE `Id` = {self._id};
|
||||||
|
@@ -18,6 +18,7 @@ class ServerConfigHistory(HistoryTableABC):
|
|||||||
team_channel_id: int,
|
team_channel_id: int,
|
||||||
login_message_channel_id: int,
|
login_message_channel_id: int,
|
||||||
default_role_id: int,
|
default_role_id: int,
|
||||||
|
short_role_name_only_set_highest_role: bool,
|
||||||
feature_flags: dict[str],
|
feature_flags: dict[str],
|
||||||
server_id: int,
|
server_id: int,
|
||||||
deleted: bool,
|
deleted: bool,
|
||||||
@@ -42,6 +43,8 @@ class ServerConfigHistory(HistoryTableABC):
|
|||||||
self._team_channel_id = team_channel_id
|
self._team_channel_id = team_channel_id
|
||||||
self._login_message_channel_id = login_message_channel_id
|
self._login_message_channel_id = login_message_channel_id
|
||||||
self._default_role_id = default_role_id
|
self._default_role_id = default_role_id
|
||||||
|
self._short_role_name_only_set_highest_role = short_role_name_only_set_highest_role
|
||||||
|
|
||||||
self._feature_flags = feature_flags
|
self._feature_flags = feature_flags
|
||||||
self._server_id = server_id
|
self._server_id = server_id
|
||||||
|
|
||||||
@@ -105,6 +108,10 @@ class ServerConfigHistory(HistoryTableABC):
|
|||||||
def default_role_id(self) -> int:
|
def default_role_id(self) -> int:
|
||||||
return self._default_role_id
|
return self._default_role_id
|
||||||
|
|
||||||
|
@property
|
||||||
|
def short_role_name_only_set_highest_role(self) -> bool:
|
||||||
|
return self._short_role_name_only_set_highest_role
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def feature_flags(self) -> dict[str]:
|
def feature_flags(self) -> dict[str]:
|
||||||
return self._feature_flags
|
return self._feature_flags
|
||||||
|
140
kdb-bot/src/bot_data/model/short_role_name.py
Normal file
140
kdb-bot/src/bot_data/model/short_role_name.py
Normal file
@@ -0,0 +1,140 @@
|
|||||||
|
from datetime import datetime
|
||||||
|
|
||||||
|
from cpl_core.database import TableABC
|
||||||
|
from cpl_core.dependency_injection import ServiceProviderABC
|
||||||
|
from cpl_discord.service import DiscordBotServiceABC
|
||||||
|
|
||||||
|
from bot_data.model.server import Server
|
||||||
|
from bot_data.model.short_role_name_position_enum import ShortRoleNamePositionEnum
|
||||||
|
|
||||||
|
|
||||||
|
class ShortRoleName(TableABC):
|
||||||
|
def __init__(
|
||||||
|
self,
|
||||||
|
short_name: str,
|
||||||
|
discord_role_id: int,
|
||||||
|
position: ShortRoleNamePositionEnum,
|
||||||
|
server: Server,
|
||||||
|
created_at: datetime = None,
|
||||||
|
modified_at: datetime = None,
|
||||||
|
id=0,
|
||||||
|
):
|
||||||
|
self._id = id
|
||||||
|
self._short_name = short_name
|
||||||
|
self._discord_role_id = discord_role_id
|
||||||
|
self._position = position
|
||||||
|
self._server = server
|
||||||
|
|
||||||
|
TableABC.__init__(self)
|
||||||
|
self._created_at = created_at if created_at is not None else self._created_at
|
||||||
|
self._modified_at = modified_at if modified_at is not None else self._modified_at
|
||||||
|
|
||||||
|
@property
|
||||||
|
def id(self) -> int:
|
||||||
|
return self._id
|
||||||
|
|
||||||
|
@property
|
||||||
|
def short_name(self) -> str:
|
||||||
|
return self._short_name
|
||||||
|
|
||||||
|
@short_name.setter
|
||||||
|
def short_name(self, value: str):
|
||||||
|
self._short_name = value
|
||||||
|
|
||||||
|
@property
|
||||||
|
def role_id(self) -> int:
|
||||||
|
return self._discord_role_id
|
||||||
|
|
||||||
|
@role_id.setter
|
||||||
|
def role_id(self, value: int):
|
||||||
|
self._discord_role_id = value
|
||||||
|
|
||||||
|
@property
|
||||||
|
@ServiceProviderABC.inject
|
||||||
|
def role_name(self, bot: DiscordBotServiceABC) -> str:
|
||||||
|
guild = bot.get_guild(self._server.discord_id)
|
||||||
|
return guild.get_role(self.role_id).name
|
||||||
|
|
||||||
|
@property
|
||||||
|
def position(self) -> ShortRoleNamePositionEnum:
|
||||||
|
return self._position
|
||||||
|
|
||||||
|
@position.setter
|
||||||
|
def position(self, value: ShortRoleNamePositionEnum):
|
||||||
|
self._position = value
|
||||||
|
|
||||||
|
@property
|
||||||
|
def server(self) -> Server:
|
||||||
|
return self._server
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def get_select_all_string() -> str:
|
||||||
|
return str(
|
||||||
|
f"""
|
||||||
|
SELECT * FROM `ShortRoleNames`;
|
||||||
|
"""
|
||||||
|
)
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def get_select_by_id_string(id: int) -> str:
|
||||||
|
return str(
|
||||||
|
f"""
|
||||||
|
SELECT * FROM `ShortRoleNames`
|
||||||
|
WHERE `Id` = {id};
|
||||||
|
"""
|
||||||
|
)
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def get_select_by_role_id_string(id: int) -> str:
|
||||||
|
return str(
|
||||||
|
f"""
|
||||||
|
SELECT * FROM `ShortRoleNames`
|
||||||
|
WHERE `DiscordRoleId` = {id};
|
||||||
|
"""
|
||||||
|
)
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def get_select_by_server_id_string(id: int) -> str:
|
||||||
|
return str(
|
||||||
|
f"""
|
||||||
|
SELECT * FROM `ShortRoleNames`
|
||||||
|
WHERE `ServerId` = {id};
|
||||||
|
"""
|
||||||
|
)
|
||||||
|
|
||||||
|
@property
|
||||||
|
def insert_string(self) -> str:
|
||||||
|
return str(
|
||||||
|
f"""
|
||||||
|
INSERT INTO `ShortRoleNames` (
|
||||||
|
`ShortName`, `DiscordRoleId`, `Position`, `ServerId`
|
||||||
|
) VALUES (
|
||||||
|
'{self._short_name}',
|
||||||
|
{self._discord_role_id},
|
||||||
|
'{self._position}',
|
||||||
|
{self._server.id}
|
||||||
|
);
|
||||||
|
"""
|
||||||
|
)
|
||||||
|
|
||||||
|
@property
|
||||||
|
def udpate_string(self) -> str:
|
||||||
|
return str(
|
||||||
|
f"""
|
||||||
|
UPDATE `ShortRoleNames`
|
||||||
|
SET `ShortName` = '{self._short_name}',
|
||||||
|
`DiscordRoleId` = {self._discord_role_id},
|
||||||
|
`Position` = '{self._position}',
|
||||||
|
`ServerId` = {self._server.id}
|
||||||
|
WHERE `Id` = {self._id};
|
||||||
|
"""
|
||||||
|
)
|
||||||
|
|
||||||
|
@property
|
||||||
|
def delete_string(self) -> str:
|
||||||
|
return str(
|
||||||
|
f"""
|
||||||
|
DELETE FROM `ShortRoleNames`
|
||||||
|
WHERE `Id` = {self._id};
|
||||||
|
"""
|
||||||
|
)
|
56
kdb-bot/src/bot_data/model/short_role_name_history.py
Normal file
56
kdb-bot/src/bot_data/model/short_role_name_history.py
Normal file
@@ -0,0 +1,56 @@
|
|||||||
|
from cpl_core.dependency_injection import ServiceProviderABC
|
||||||
|
from cpl_discord.service import DiscordBotServiceABC
|
||||||
|
|
||||||
|
from bot_data.abc.history_table_abc import HistoryTableABC
|
||||||
|
|
||||||
|
|
||||||
|
class ShortRoleNameHistory(HistoryTableABC):
|
||||||
|
def __init__(
|
||||||
|
self,
|
||||||
|
name: str,
|
||||||
|
discord_role_id: int,
|
||||||
|
server: int,
|
||||||
|
deleted: bool,
|
||||||
|
date_from: str,
|
||||||
|
date_to: str,
|
||||||
|
id=0,
|
||||||
|
):
|
||||||
|
HistoryTableABC.__init__(self)
|
||||||
|
self._id = id
|
||||||
|
self._name = name
|
||||||
|
self._discord_role_id = discord_role_id
|
||||||
|
self._server = server
|
||||||
|
|
||||||
|
self._deleted = deleted
|
||||||
|
self._date_from = date_from
|
||||||
|
self._date_to = date_to
|
||||||
|
|
||||||
|
@property
|
||||||
|
def id(self) -> int:
|
||||||
|
return self._id
|
||||||
|
|
||||||
|
@property
|
||||||
|
def name(self) -> str:
|
||||||
|
return self._name
|
||||||
|
|
||||||
|
@name.setter
|
||||||
|
def name(self, value: str):
|
||||||
|
self._name = value
|
||||||
|
|
||||||
|
@property
|
||||||
|
def role_id(self) -> int:
|
||||||
|
return self._discord_role_id
|
||||||
|
|
||||||
|
@role_id.setter
|
||||||
|
def role_id(self, value: int):
|
||||||
|
self._discord_role_id = value
|
||||||
|
|
||||||
|
@property
|
||||||
|
@ServiceProviderABC.inject
|
||||||
|
def role_name(self, bot: DiscordBotServiceABC) -> str:
|
||||||
|
guild = bot.get_guild(self._server.discord_id)
|
||||||
|
return guild.get_role(self.role_id).name
|
||||||
|
|
||||||
|
@property
|
||||||
|
def server(self) -> int:
|
||||||
|
return self._server
|
@@ -0,0 +1,6 @@
|
|||||||
|
from enum import Enum
|
||||||
|
|
||||||
|
|
||||||
|
class ShortRoleNamePositionEnum(Enum):
|
||||||
|
before = "before"
|
||||||
|
after = "after"
|
@@ -1,10 +1,10 @@
|
|||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
"""
|
"""
|
||||||
bot Keksdose bot
|
bot sh-edraft.de Discord bot
|
||||||
~~~~~~~~~~~~~~~~~~~
|
~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
Discord bot for the Keksdose discord Server
|
Discord bot for customers of sh-edraft.de
|
||||||
|
|
||||||
:copyright: (c) 2022 - 2023 sh-edraft.de
|
:copyright: (c) 2022 - 2023 sh-edraft.de
|
||||||
:license: MIT, see LICENSE for more details.
|
:license: MIT, see LICENSE for more details.
|
||||||
@@ -15,7 +15,7 @@ __title__ = "bot_data.service"
|
|||||||
__author__ = "Sven Heidemann"
|
__author__ = "Sven Heidemann"
|
||||||
__license__ = "MIT"
|
__license__ = "MIT"
|
||||||
__copyright__ = "Copyright (c) 2022 - 2023 sh-edraft.de"
|
__copyright__ = "Copyright (c) 2022 - 2023 sh-edraft.de"
|
||||||
__version__ = "1.1.6"
|
__version__ = "1.1.10"
|
||||||
|
|
||||||
from collections import namedtuple
|
from collections import namedtuple
|
||||||
|
|
||||||
@@ -23,4 +23,4 @@ from collections import namedtuple
|
|||||||
# imports
|
# imports
|
||||||
|
|
||||||
VersionInfo = namedtuple("VersionInfo", "major minor micro")
|
VersionInfo = namedtuple("VersionInfo", "major minor micro")
|
||||||
version_info = VersionInfo(major="1", minor="1", micro="6")
|
version_info = VersionInfo(major="1", minor="1", micro="10")
|
||||||
|
@@ -65,12 +65,13 @@ class ServerConfigRepositoryService(ServerConfigRepositoryABC):
|
|||||||
result[12],
|
result[12],
|
||||||
result[13],
|
result[13],
|
||||||
result[14],
|
result[14],
|
||||||
json.loads(result[15]),
|
result[15],
|
||||||
self._servers.get_server_by_id(result[16]),
|
json.loads(result[16]),
|
||||||
self._get_afk_channel_ids(result[16]),
|
self._servers.get_server_by_id(result[17]),
|
||||||
self._get_team_role_ids(result[16]),
|
self._get_afk_channel_ids(result[17]),
|
||||||
result[17],
|
self._get_team_role_ids(result[17]),
|
||||||
result[18],
|
result[18],
|
||||||
|
result[19],
|
||||||
id=result[0],
|
id=result[0],
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@@ -34,30 +34,12 @@ class ServerConfigSeeder(DataSeederABC):
|
|||||||
if self._server_config.does_server_config_exists(server.id):
|
if self._server_config.does_server_config_exists(server.id):
|
||||||
continue
|
continue
|
||||||
|
|
||||||
config = ServerConfig(
|
config = ServerConfig.new(guild, server)
|
||||||
6,
|
|
||||||
guild.system_channel.id,
|
|
||||||
6,
|
|
||||||
1,
|
|
||||||
1,
|
|
||||||
20,
|
|
||||||
10,
|
|
||||||
10,
|
|
||||||
10,
|
|
||||||
guild.system_channel.id,
|
|
||||||
guild.system_channel.id,
|
|
||||||
guild.system_channel.id,
|
|
||||||
guild.system_channel.id,
|
|
||||||
{},
|
|
||||||
server,
|
|
||||||
[],
|
|
||||||
[],
|
|
||||||
)
|
|
||||||
|
|
||||||
self._server_config.add_server_config(config)
|
self._server_config.add_server_config(config)
|
||||||
|
|
||||||
self._db.save_changes()
|
self._db.save_changes()
|
||||||
self._logger.debug(__name__, "Seeded technician config")
|
self._logger.debug(__name__, "Seeded server config")
|
||||||
|
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
self._logger.error(__name__, f"Seeding technician config failed", e)
|
self._logger.error(__name__, f"Seeding server config failed", e)
|
||||||
|
@@ -0,0 +1,95 @@
|
|||||||
|
from typing import Optional
|
||||||
|
|
||||||
|
from cpl_core.database.context import DatabaseContextABC
|
||||||
|
from cpl_query.extension import List
|
||||||
|
|
||||||
|
from bot_core.logging.database_logger import DatabaseLogger
|
||||||
|
from bot_data.abc.server_repository_abc import ServerRepositoryABC
|
||||||
|
from bot_data.abc.short_role_name_repository_abc import ShortRoleNameRepositoryABC
|
||||||
|
from bot_data.model.short_role_name import ShortRoleName
|
||||||
|
from bot_data.model.short_role_name_position_enum import ShortRoleNamePositionEnum
|
||||||
|
|
||||||
|
|
||||||
|
class ShortRoleNameRepositoryService(ShortRoleNameRepositoryABC):
|
||||||
|
def __init__(
|
||||||
|
self,
|
||||||
|
logger: DatabaseLogger,
|
||||||
|
db_context: DatabaseContextABC,
|
||||||
|
servers: ServerRepositoryABC,
|
||||||
|
):
|
||||||
|
self._logger = logger
|
||||||
|
self._context = db_context
|
||||||
|
|
||||||
|
self._servers = servers
|
||||||
|
|
||||||
|
ShortRoleNameRepositoryABC.__init__(self)
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def _get_value_from_result(value: any) -> Optional[any]:
|
||||||
|
if isinstance(value, str) and "NULL" in value:
|
||||||
|
return None
|
||||||
|
|
||||||
|
return value
|
||||||
|
|
||||||
|
def _short_role_name_from_result(self, sql_result: tuple) -> ShortRoleName:
|
||||||
|
return ShortRoleName(
|
||||||
|
self._get_value_from_result(sql_result[1]), # name
|
||||||
|
int(self._get_value_from_result(sql_result[2])), # role_id
|
||||||
|
ShortRoleNamePositionEnum(self._get_value_from_result(sql_result[3])), # position
|
||||||
|
self._servers.get_server_by_id(sql_result[4]), # server
|
||||||
|
self._get_value_from_result(sql_result[5]), # created_at
|
||||||
|
self._get_value_from_result(sql_result[6]), # modified_at
|
||||||
|
id=self._get_value_from_result(sql_result[0]), # id
|
||||||
|
)
|
||||||
|
|
||||||
|
def get_short_role_names(self) -> List[ShortRoleName]:
|
||||||
|
short_role_names = List(ShortRoleName)
|
||||||
|
self._logger.trace(__name__, f"Send SQL command: {ShortRoleName.get_select_all_string()}")
|
||||||
|
results = self._context.select(ShortRoleName.get_select_all_string())
|
||||||
|
for result in results:
|
||||||
|
self._logger.trace(__name__, f"Get short_role_name with id {result[0]}")
|
||||||
|
short_role_names.append(self._short_role_name_from_result(result))
|
||||||
|
|
||||||
|
return short_role_names
|
||||||
|
|
||||||
|
def get_short_role_name_by_id(self, id: int) -> ShortRoleName:
|
||||||
|
self._logger.trace(__name__, f"Send SQL command: {ShortRoleName.get_select_by_id_string(id)}")
|
||||||
|
result = self._context.select(ShortRoleName.get_select_by_id_string(id))[0]
|
||||||
|
|
||||||
|
return self._short_role_name_from_result(result)
|
||||||
|
|
||||||
|
def find_short_role_names_by_role_id(self, role_id: int) -> List[ShortRoleName]:
|
||||||
|
short_role_names = List(ShortRoleName)
|
||||||
|
self._logger.trace(__name__, f"Send SQL command: {ShortRoleName.get_select_by_role_id_string(role_id)}")
|
||||||
|
results = self._context.select(ShortRoleName.get_select_by_role_id_string(role_id))
|
||||||
|
for result in results:
|
||||||
|
self._logger.trace(__name__, f"Get short_role_name with id {result[0]}")
|
||||||
|
short_role_names.append(self._short_role_name_from_result(result))
|
||||||
|
|
||||||
|
return short_role_names
|
||||||
|
|
||||||
|
def get_short_role_names_by_server_id(self, server_id: int) -> List[ShortRoleName]:
|
||||||
|
short_role_names = List(ShortRoleName)
|
||||||
|
self._logger.trace(
|
||||||
|
__name__,
|
||||||
|
f"Send SQL command: {ShortRoleName.get_select_by_server_id_string(server_id)}",
|
||||||
|
)
|
||||||
|
results = self._context.select(ShortRoleName.get_select_by_server_id_string(server_id))
|
||||||
|
|
||||||
|
for result in results:
|
||||||
|
self._logger.trace(__name__, f"Get short_role_name with id {result[0]}")
|
||||||
|
short_role_names.append(self._short_role_name_from_result(result))
|
||||||
|
|
||||||
|
return short_role_names
|
||||||
|
|
||||||
|
def add_short_role_name(self, short_role_name: ShortRoleName):
|
||||||
|
self._logger.trace(__name__, f"Send SQL command: {short_role_name.insert_string}")
|
||||||
|
self._context.cursor.execute(short_role_name.insert_string)
|
||||||
|
|
||||||
|
def update_short_role_name(self, short_role_name: ShortRoleName):
|
||||||
|
self._logger.trace(__name__, f"Send SQL command: {short_role_name.udpate_string}")
|
||||||
|
self._context.cursor.execute(short_role_name.udpate_string)
|
||||||
|
|
||||||
|
def delete_short_role_name(self, short_role_name: ShortRoleName):
|
||||||
|
self._logger.trace(__name__, f"Send SQL command: {short_role_name.delete_string}")
|
||||||
|
self._context.cursor.execute(short_role_name.delete_string)
|
@@ -1,10 +1,10 @@
|
|||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
"""
|
"""
|
||||||
bot Keksdose bot
|
bot sh-edraft.de Discord bot
|
||||||
~~~~~~~~~~~~~~~~~~~
|
~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
Discord bot for the Keksdose discord Server
|
Discord bot for customers of sh-edraft.de
|
||||||
|
|
||||||
:copyright: (c) 2022 - 2023 sh-edraft.de
|
:copyright: (c) 2022 - 2023 sh-edraft.de
|
||||||
:license: MIT, see LICENSE for more details.
|
:license: MIT, see LICENSE for more details.
|
||||||
@@ -15,7 +15,7 @@ __title__ = "bot_graphql"
|
|||||||
__author__ = "Sven Heidemann"
|
__author__ = "Sven Heidemann"
|
||||||
__license__ = "MIT"
|
__license__ = "MIT"
|
||||||
__copyright__ = "Copyright (c) 2022 - 2023 sh-edraft.de"
|
__copyright__ = "Copyright (c) 2022 - 2023 sh-edraft.de"
|
||||||
__version__ = "1.1.6"
|
__version__ = "1.1.10"
|
||||||
|
|
||||||
from collections import namedtuple
|
from collections import namedtuple
|
||||||
|
|
||||||
@@ -23,4 +23,4 @@ from collections import namedtuple
|
|||||||
# imports
|
# imports
|
||||||
|
|
||||||
VersionInfo = namedtuple("VersionInfo", "major minor micro")
|
VersionInfo = namedtuple("VersionInfo", "major minor micro")
|
||||||
version_info = VersionInfo(major="1", minor="1", micro="6")
|
version_info = VersionInfo(major="1", minor="1", micro="10")
|
||||||
|
@@ -1,10 +1,10 @@
|
|||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
"""
|
"""
|
||||||
bot Keksdose bot
|
bot sh-edraft.de Discord bot
|
||||||
~~~~~~~~~~~~~~~~~~~
|
~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
Discord bot for the Keksdose discord Server
|
Discord bot for customers of sh-edraft.de
|
||||||
|
|
||||||
:copyright: (c) 2022 - 2023 sh-edraft.de
|
:copyright: (c) 2022 - 2023 sh-edraft.de
|
||||||
:license: MIT, see LICENSE for more details.
|
:license: MIT, see LICENSE for more details.
|
||||||
@@ -15,7 +15,7 @@ __title__ = "bot_graphql.abc"
|
|||||||
__author__ = "Sven Heidemann"
|
__author__ = "Sven Heidemann"
|
||||||
__license__ = "MIT"
|
__license__ = "MIT"
|
||||||
__copyright__ = "Copyright (c) 2022 - 2023 sh-edraft.de"
|
__copyright__ = "Copyright (c) 2022 - 2023 sh-edraft.de"
|
||||||
__version__ = "1.1.6"
|
__version__ = "1.1.10"
|
||||||
|
|
||||||
from collections import namedtuple
|
from collections import namedtuple
|
||||||
|
|
||||||
@@ -23,4 +23,4 @@ from collections import namedtuple
|
|||||||
# imports:
|
# imports:
|
||||||
|
|
||||||
VersionInfo = namedtuple("VersionInfo", "major minor micro")
|
VersionInfo = namedtuple("VersionInfo", "major minor micro")
|
||||||
version_info = VersionInfo(major="1", minor="1", micro="6")
|
version_info = VersionInfo(major="1", minor="1", micro="10")
|
||||||
|
@@ -20,6 +20,7 @@ from bot_data.model.known_user import KnownUser
|
|||||||
from bot_data.model.level import Level
|
from bot_data.model.level import Level
|
||||||
from bot_data.model.server import Server
|
from bot_data.model.server import Server
|
||||||
from bot_data.model.server_config import ServerConfig
|
from bot_data.model.server_config import ServerConfig
|
||||||
|
from bot_data.model.short_role_name import ShortRoleName
|
||||||
from bot_data.model.user import User
|
from bot_data.model.user import User
|
||||||
from bot_data.model.user_joined_game_server import UserJoinedGameServer
|
from bot_data.model.user_joined_game_server import UserJoinedGameServer
|
||||||
from bot_data.model.user_joined_server import UserJoinedServer
|
from bot_data.model.user_joined_server import UserJoinedServer
|
||||||
@@ -78,6 +79,14 @@ class QueryABC(ObjectType):
|
|||||||
permissions: PermissionService = services.get_service(PermissionService)
|
permissions: PermissionService = services.get_service(PermissionService)
|
||||||
bot: DiscordBotServiceABC = services.get_service(DiscordBotServiceABC)
|
bot: DiscordBotServiceABC = services.get_service(DiscordBotServiceABC)
|
||||||
|
|
||||||
|
if user.auth_role == AuthRoleEnum.admin:
|
||||||
|
return True
|
||||||
|
|
||||||
|
for u in user.users:
|
||||||
|
guild = bot.get_guild(u.server.discord_id)
|
||||||
|
if permissions.is_member_technician(guild.get_member(u.discord_id)):
|
||||||
|
return True
|
||||||
|
|
||||||
access = False
|
access = False
|
||||||
if type(element) == Achievement:
|
if type(element) == Achievement:
|
||||||
element: Achievement = element
|
element: Achievement = element
|
||||||
@@ -184,6 +193,16 @@ class QueryABC(ObjectType):
|
|||||||
access = True
|
access = True
|
||||||
break
|
break
|
||||||
|
|
||||||
|
elif type(element) == ShortRoleName:
|
||||||
|
element: ShortRoleName = element
|
||||||
|
for u in user.users:
|
||||||
|
u: User = u
|
||||||
|
guild = bot.get_guild(u.server.discord_id)
|
||||||
|
member = guild.get_member(u.discord_id)
|
||||||
|
if permissions.is_member_moderator(member) and u.server.id == element.server.id:
|
||||||
|
access = True
|
||||||
|
break
|
||||||
|
|
||||||
elif type(element) == dict and "key" in element and element["key"] in [e.value for e in FeatureFlagsEnum]:
|
elif type(element) == dict and "key" in element and element["key"] in [e.value for e in FeatureFlagsEnum]:
|
||||||
for u in user.users:
|
for u in user.users:
|
||||||
u: User = u
|
u: User = u
|
||||||
|
@@ -4,7 +4,7 @@
|
|||||||
"Version": {
|
"Version": {
|
||||||
"Major": "1",
|
"Major": "1",
|
||||||
"Minor": "1",
|
"Minor": "1",
|
||||||
"Micro": "6"
|
"Micro": "10"
|
||||||
},
|
},
|
||||||
"Author": "Sven Heidemann",
|
"Author": "Sven Heidemann",
|
||||||
"AuthorEmail": "sven.heidemann@sh-edraft.de",
|
"AuthorEmail": "sven.heidemann@sh-edraft.de",
|
||||||
|
@@ -1,10 +1,10 @@
|
|||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
"""
|
"""
|
||||||
bot Keksdose bot
|
bot sh-edraft.de Discord bot
|
||||||
~~~~~~~~~~~~~~~~~~~
|
~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
Discord bot for the Keksdose discord Server
|
Discord bot for customers of sh-edraft.de
|
||||||
|
|
||||||
:copyright: (c) 2022 - 2023 sh-edraft.de
|
:copyright: (c) 2022 - 2023 sh-edraft.de
|
||||||
:license: MIT, see LICENSE for more details.
|
:license: MIT, see LICENSE for more details.
|
||||||
@@ -15,7 +15,7 @@ __title__ = "bot_graphql.filter"
|
|||||||
__author__ = "Sven Heidemann"
|
__author__ = "Sven Heidemann"
|
||||||
__license__ = "MIT"
|
__license__ = "MIT"
|
||||||
__copyright__ = "Copyright (c) 2022 - 2023 sh-edraft.de"
|
__copyright__ = "Copyright (c) 2022 - 2023 sh-edraft.de"
|
||||||
__version__ = "1.1.6"
|
__version__ = "1.1.10"
|
||||||
|
|
||||||
from collections import namedtuple
|
from collections import namedtuple
|
||||||
|
|
||||||
@@ -23,4 +23,4 @@ from collections import namedtuple
|
|||||||
# imports:
|
# imports:
|
||||||
|
|
||||||
VersionInfo = namedtuple("VersionInfo", "major minor micro")
|
VersionInfo = namedtuple("VersionInfo", "major minor micro")
|
||||||
version_info = VersionInfo(major="1", minor="1", micro="6")
|
version_info = VersionInfo(major="1", minor="1", micro="10")
|
||||||
|
70
kdb-bot/src/bot_graphql/filter/short_role_name_filter.py
Normal file
70
kdb-bot/src/bot_graphql/filter/short_role_name_filter.py
Normal file
@@ -0,0 +1,70 @@
|
|||||||
|
from cpl_discord.service import DiscordBotServiceABC
|
||||||
|
from cpl_query.extension import List
|
||||||
|
|
||||||
|
from bot_data.model.short_role_name import ShortRoleName
|
||||||
|
from bot_data.model.short_role_name_position_enum import ShortRoleNamePositionEnum
|
||||||
|
from bot_data.model.user import User
|
||||||
|
from bot_graphql.abc.filter_abc import FilterABC
|
||||||
|
|
||||||
|
|
||||||
|
class ShortRoleNameFilter(FilterABC):
|
||||||
|
def __init__(self, bot: DiscordBotServiceABC):
|
||||||
|
FilterABC.__init__(self)
|
||||||
|
self._bot = bot
|
||||||
|
|
||||||
|
self._id = None
|
||||||
|
self._short_name = None
|
||||||
|
self._role_id = None
|
||||||
|
self._role_name = None
|
||||||
|
self._position = None
|
||||||
|
self._server = None
|
||||||
|
|
||||||
|
def from_dict(self, values: dict):
|
||||||
|
if "id" in values:
|
||||||
|
self._id = int(values["id"])
|
||||||
|
|
||||||
|
if "shortName" in values:
|
||||||
|
self._short_name = values["shortName"]
|
||||||
|
|
||||||
|
if "roleId" in values:
|
||||||
|
self._role_id = int(values["roleId"])
|
||||||
|
|
||||||
|
if "roleName" in values:
|
||||||
|
self._role_name = values["roleName"]
|
||||||
|
|
||||||
|
if "position" in values:
|
||||||
|
self._position = ShortRoleNamePositionEnum(values["position"])
|
||||||
|
|
||||||
|
if "server" in values:
|
||||||
|
from bot_graphql.filter.server_filter import ServerFilter
|
||||||
|
|
||||||
|
self._server: ServerFilter = self._services.get_service(ServerFilter)
|
||||||
|
self._server.from_dict(values["server"])
|
||||||
|
|
||||||
|
def filter(self, query: List[User]) -> List[User]:
|
||||||
|
if self._id is not None:
|
||||||
|
query = query.where(lambda x: x.id == self._id)
|
||||||
|
|
||||||
|
if self._short_name is not None:
|
||||||
|
query = query.where(lambda x: x.short_name == self._short_name or self._short_name in x.short_name)
|
||||||
|
|
||||||
|
if self._role_id is not None:
|
||||||
|
query = query.where(lambda x: x.role_id == self._role_id)
|
||||||
|
|
||||||
|
if self._role_name is not None and self._role_id is not None:
|
||||||
|
|
||||||
|
def get_role_name(x: ShortRoleName):
|
||||||
|
guild = self._bot.get_guild(x.server.discord_id)
|
||||||
|
name = guild.get_role(x.role_id).name
|
||||||
|
return name == self._role_name or self._role_name in name
|
||||||
|
|
||||||
|
query = query.where(get_role_name)
|
||||||
|
|
||||||
|
if self._position is not None:
|
||||||
|
query = query.where(lambda x: x.position.value == self._position.value)
|
||||||
|
|
||||||
|
if self._server is not None:
|
||||||
|
servers = self._server.filter(query.select(lambda x: x.server)).select(lambda x: x.id)
|
||||||
|
query = query.where(lambda x: x.server.id in servers)
|
||||||
|
|
||||||
|
return query
|
@@ -5,6 +5,7 @@ type Mutation {
|
|||||||
user: UserMutation
|
user: UserMutation
|
||||||
userJoinedGameServer: UserJoinedGameServerMutation
|
userJoinedGameServer: UserJoinedGameServerMutation
|
||||||
achievement: AchievementMutation
|
achievement: AchievementMutation
|
||||||
|
shortRoleName: ShortRoleNameMutation
|
||||||
technicianConfig: TechnicianConfigMutation
|
technicianConfig: TechnicianConfigMutation
|
||||||
serverConfig: ServerConfigMutation
|
serverConfig: ServerConfigMutation
|
||||||
}
|
}
|
@@ -37,6 +37,10 @@ type Query {
|
|||||||
achievementAttributes: [AchievementAttribute]
|
achievementAttributes: [AchievementAttribute]
|
||||||
achievementOperators: [String]
|
achievementOperators: [String]
|
||||||
|
|
||||||
|
shortRoleNameCount: Int
|
||||||
|
shortRoleNames(filter: ShortRoleNameFilter, page: Page, sort: Sort): [ShortRoleName]
|
||||||
|
shortRoleNamePositions: [String]
|
||||||
|
|
||||||
technicianConfig: TechnicianConfig
|
technicianConfig: TechnicianConfig
|
||||||
possibleFeatureFlags: [String]
|
possibleFeatureFlags: [String]
|
||||||
discord: Discord
|
discord: Discord
|
||||||
|
@@ -31,7 +31,11 @@ type Server implements TableWithHistoryQuery {
|
|||||||
achievementCount: Int
|
achievementCount: Int
|
||||||
achievements(filter: AchievementFilter, page: Page, sort: Sort): [Achievement]
|
achievements(filter: AchievementFilter, page: Page, sort: Sort): [Achievement]
|
||||||
|
|
||||||
|
shortRoleNameCount: Int
|
||||||
|
shortRoleNames(filter: ShortRoleNameFilter, page: Page, sort: Sort): [ShortRoleName]
|
||||||
|
|
||||||
config: ServerConfig
|
config: ServerConfig
|
||||||
|
hasFeatureFlag(flag: String): FeatureFlag
|
||||||
|
|
||||||
createdAt: String
|
createdAt: String
|
||||||
modifiedAt: String
|
modifiedAt: String
|
||||||
|
@@ -14,6 +14,7 @@ type ServerConfig implements TableWithHistoryQuery {
|
|||||||
teamChannelId: String
|
teamChannelId: String
|
||||||
loginMessageChannelId: String
|
loginMessageChannelId: String
|
||||||
defaultRoleId: String
|
defaultRoleId: String
|
||||||
|
shortRoleNameOnlySetHighestRole: Boolean
|
||||||
featureFlagCount: Int
|
featureFlagCount: Int
|
||||||
featureFlags: [FeatureFlag]
|
featureFlags: [FeatureFlag]
|
||||||
|
|
||||||
@@ -45,6 +46,7 @@ type ServerConfigHistory implements HistoryTableQuery {
|
|||||||
teamChannelId: String
|
teamChannelId: String
|
||||||
loginMessageChannelId: String
|
loginMessageChannelId: String
|
||||||
defaultRoleId: String
|
defaultRoleId: String
|
||||||
|
shortRoleNameOnlySetHighestRole: Boolean
|
||||||
featureFlagCount: Int
|
featureFlagCount: Int
|
||||||
featureFlags: [FeatureFlag]
|
featureFlags: [FeatureFlag]
|
||||||
|
|
||||||
@@ -94,6 +96,7 @@ input ServerConfigInput {
|
|||||||
teamChannelId: String
|
teamChannelId: String
|
||||||
loginMessageChannelId: String
|
loginMessageChannelId: String
|
||||||
defaultRoleId: String
|
defaultRoleId: String
|
||||||
|
shortRoleNameOnlySetHighestRole: Boolean
|
||||||
featureFlags: [FeatureFlagInput]
|
featureFlags: [FeatureFlagInput]
|
||||||
|
|
||||||
afkChannelIds: [String]
|
afkChannelIds: [String]
|
||||||
|
50
kdb-bot/src/bot_graphql/graphql/shortRoleName.gql
Normal file
50
kdb-bot/src/bot_graphql/graphql/shortRoleName.gql
Normal file
@@ -0,0 +1,50 @@
|
|||||||
|
type ShortRoleName implements TableWithHistoryQuery {
|
||||||
|
id: ID
|
||||||
|
shortName: String
|
||||||
|
roleId: String
|
||||||
|
roleName: String
|
||||||
|
position: String
|
||||||
|
|
||||||
|
server: Server
|
||||||
|
|
||||||
|
createdAt: String
|
||||||
|
modifiedAt: String
|
||||||
|
|
||||||
|
history: [ShortRoleNameHistory]
|
||||||
|
}
|
||||||
|
|
||||||
|
type ShortRoleNameHistory implements HistoryTableQuery {
|
||||||
|
id: ID
|
||||||
|
shortName: String
|
||||||
|
roleId: String
|
||||||
|
position: String
|
||||||
|
|
||||||
|
server: ID
|
||||||
|
|
||||||
|
deleted: Boolean
|
||||||
|
dateFrom: String
|
||||||
|
dateTo: String
|
||||||
|
}
|
||||||
|
|
||||||
|
input ShortRoleNameFilter {
|
||||||
|
id: ID
|
||||||
|
shortName: String
|
||||||
|
roleId: String
|
||||||
|
roleName: String
|
||||||
|
position: String
|
||||||
|
}
|
||||||
|
|
||||||
|
type ShortRoleNameMutation {
|
||||||
|
createShortRoleName(input: ShortRoleNameInput!): ShortRoleName
|
||||||
|
updateShortRoleName(input: ShortRoleNameInput!): ShortRoleName
|
||||||
|
deleteShortRoleName(id: ID): ShortRoleName
|
||||||
|
}
|
||||||
|
|
||||||
|
input ShortRoleNameInput {
|
||||||
|
id: ID
|
||||||
|
shortName: String
|
||||||
|
roleId: String
|
||||||
|
roleName: String
|
||||||
|
position: String
|
||||||
|
serverId: ID
|
||||||
|
}
|
@@ -5,7 +5,6 @@ from cpl_discord.service.discord_collection_abc import DiscordCollectionABC
|
|||||||
|
|
||||||
from bot_core.abc.module_abc import ModuleABC
|
from bot_core.abc.module_abc import ModuleABC
|
||||||
from bot_core.configuration.feature_flags_enum import FeatureFlagsEnum
|
from bot_core.configuration.feature_flags_enum import FeatureFlagsEnum
|
||||||
from bot_data.service.seeder_service import SeederService
|
|
||||||
from bot_graphql.abc.filter_abc import FilterABC
|
from bot_graphql.abc.filter_abc import FilterABC
|
||||||
from bot_graphql.abc.query_abc import QueryABC
|
from bot_graphql.abc.query_abc import QueryABC
|
||||||
from bot_graphql.filter.achievement_filter import AchievementFilter
|
from bot_graphql.filter.achievement_filter import AchievementFilter
|
||||||
@@ -14,6 +13,7 @@ from bot_graphql.filter.auto_role_rule_filter import AutoRoleRuleFilter
|
|||||||
from bot_graphql.filter.client_filter import ClientFilter
|
from bot_graphql.filter.client_filter import ClientFilter
|
||||||
from bot_graphql.filter.level_filter import LevelFilter
|
from bot_graphql.filter.level_filter import LevelFilter
|
||||||
from bot_graphql.filter.server_filter import ServerFilter
|
from bot_graphql.filter.server_filter import ServerFilter
|
||||||
|
from bot_graphql.filter.short_role_name_filter import ShortRoleNameFilter
|
||||||
from bot_graphql.filter.user_filter import UserFilter
|
from bot_graphql.filter.user_filter import UserFilter
|
||||||
from bot_graphql.filter.user_joined_game_server_filter import UserJoinedGameServerFilter
|
from bot_graphql.filter.user_joined_game_server_filter import UserJoinedGameServerFilter
|
||||||
from bot_graphql.filter.user_joined_server_filter import UserJoinedServerFilter
|
from bot_graphql.filter.user_joined_server_filter import UserJoinedServerFilter
|
||||||
@@ -25,6 +25,7 @@ from bot_graphql.mutations.auto_role_mutation import AutoRoleMutation
|
|||||||
from bot_graphql.mutations.auto_role_rule_mutation import AutoRoleRuleMutation
|
from bot_graphql.mutations.auto_role_rule_mutation import AutoRoleRuleMutation
|
||||||
from bot_graphql.mutations.level_mutation import LevelMutation
|
from bot_graphql.mutations.level_mutation import LevelMutation
|
||||||
from bot_graphql.mutations.server_config_mutation import ServerConfigMutation
|
from bot_graphql.mutations.server_config_mutation import ServerConfigMutation
|
||||||
|
from bot_graphql.mutations.short_role_name_mutation import ShortRoleNameMutation
|
||||||
from bot_graphql.mutations.technician_config_mutation import TechnicianConfigMutation
|
from bot_graphql.mutations.technician_config_mutation import TechnicianConfigMutation
|
||||||
from bot_graphql.mutations.user_joined_game_server_mutation import UserJoinedGameServerMutation
|
from bot_graphql.mutations.user_joined_game_server_mutation import UserJoinedGameServerMutation
|
||||||
from bot_graphql.mutations.user_mutation import UserMutation
|
from bot_graphql.mutations.user_mutation import UserMutation
|
||||||
@@ -51,6 +52,8 @@ from bot_graphql.queries.level_query import LevelQuery
|
|||||||
from bot_graphql.queries.server_config_query import ServerConfigQuery
|
from bot_graphql.queries.server_config_query import ServerConfigQuery
|
||||||
from bot_graphql.queries.server_history_query import ServerHistoryQuery
|
from bot_graphql.queries.server_history_query import ServerHistoryQuery
|
||||||
from bot_graphql.queries.server_query import ServerQuery
|
from bot_graphql.queries.server_query import ServerQuery
|
||||||
|
from bot_graphql.queries.short_role_name_history_query import ShortRoleNameHistoryQuery
|
||||||
|
from bot_graphql.queries.short_role_name_query import ShortRoleNameQuery
|
||||||
from bot_graphql.queries.technician_config_history_query import TechnicianConfigHistoryQuery
|
from bot_graphql.queries.technician_config_history_query import TechnicianConfigHistoryQuery
|
||||||
from bot_graphql.queries.technician_config_query import TechnicianConfigQuery
|
from bot_graphql.queries.technician_config_query import TechnicianConfigQuery
|
||||||
from bot_graphql.queries.technician_id_config_history_query import TechnicianIdConfigHistoryQuery
|
from bot_graphql.queries.technician_id_config_history_query import TechnicianIdConfigHistoryQuery
|
||||||
@@ -110,6 +113,8 @@ class GraphQLModule(ModuleABC):
|
|||||||
services.add_transient(QueryABC, UserJoinedVoiceChannelQuery)
|
services.add_transient(QueryABC, UserJoinedVoiceChannelQuery)
|
||||||
services.add_transient(QueryABC, UserJoinedGameServerHistoryQuery)
|
services.add_transient(QueryABC, UserJoinedGameServerHistoryQuery)
|
||||||
services.add_transient(QueryABC, UserJoinedGameServerQuery)
|
services.add_transient(QueryABC, UserJoinedGameServerQuery)
|
||||||
|
services.add_transient(QueryABC, ShortRoleNameHistoryQuery)
|
||||||
|
services.add_transient(QueryABC, ShortRoleNameQuery)
|
||||||
|
|
||||||
services.add_transient(QueryABC, DiscordQuery)
|
services.add_transient(QueryABC, DiscordQuery)
|
||||||
services.add_transient(QueryABC, GuildQuery)
|
services.add_transient(QueryABC, GuildQuery)
|
||||||
@@ -129,6 +134,7 @@ class GraphQLModule(ModuleABC):
|
|||||||
services.add_transient(FilterABC, UserJoinedServerFilter)
|
services.add_transient(FilterABC, UserJoinedServerFilter)
|
||||||
services.add_transient(FilterABC, UserJoinedVoiceChannelFilter)
|
services.add_transient(FilterABC, UserJoinedVoiceChannelFilter)
|
||||||
services.add_transient(FilterABC, UserJoinedGameServerFilter)
|
services.add_transient(FilterABC, UserJoinedGameServerFilter)
|
||||||
|
services.add_transient(FilterABC, ShortRoleNameFilter)
|
||||||
|
|
||||||
# mutations
|
# mutations
|
||||||
services.add_transient(QueryABC, AutoRoleMutation)
|
services.add_transient(QueryABC, AutoRoleMutation)
|
||||||
@@ -136,8 +142,7 @@ class GraphQLModule(ModuleABC):
|
|||||||
services.add_transient(QueryABC, LevelMutation)
|
services.add_transient(QueryABC, LevelMutation)
|
||||||
services.add_transient(QueryABC, UserMutation)
|
services.add_transient(QueryABC, UserMutation)
|
||||||
services.add_transient(QueryABC, AchievementMutation)
|
services.add_transient(QueryABC, AchievementMutation)
|
||||||
|
services.add_transient(QueryABC, ShortRoleNameMutation)
|
||||||
services.add_transient(QueryABC, UserJoinedGameServerMutation)
|
services.add_transient(QueryABC, UserJoinedGameServerMutation)
|
||||||
services.add_transient(QueryABC, TechnicianConfigMutation)
|
services.add_transient(QueryABC, TechnicianConfigMutation)
|
||||||
services.add_transient(QueryABC, ServerConfigMutation)
|
services.add_transient(QueryABC, ServerConfigMutation)
|
||||||
|
|
||||||
services.add_transient(SeederService)
|
|
||||||
|
@@ -1,10 +1,10 @@
|
|||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
"""
|
"""
|
||||||
bot Keksdose bot
|
bot sh-edraft.de Discord bot
|
||||||
~~~~~~~~~~~~~~~~~~~
|
~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
Discord bot for the Keksdose discord Server
|
Discord bot for customers of sh-edraft.de
|
||||||
|
|
||||||
:copyright: (c) 2022 - 2023 sh-edraft.de
|
:copyright: (c) 2022 - 2023 sh-edraft.de
|
||||||
:license: MIT, see LICENSE for more details.
|
:license: MIT, see LICENSE for more details.
|
||||||
@@ -15,7 +15,7 @@ __title__ = "bot_graphql.model"
|
|||||||
__author__ = "Sven Heidemann"
|
__author__ = "Sven Heidemann"
|
||||||
__license__ = "MIT"
|
__license__ = "MIT"
|
||||||
__copyright__ = "Copyright (c) 2022 - 2023 sh-edraft.de"
|
__copyright__ = "Copyright (c) 2022 - 2023 sh-edraft.de"
|
||||||
__version__ = "1.1.6"
|
__version__ = "1.1.10"
|
||||||
|
|
||||||
from collections import namedtuple
|
from collections import namedtuple
|
||||||
|
|
||||||
@@ -23,4 +23,4 @@ from collections import namedtuple
|
|||||||
# imports
|
# imports
|
||||||
|
|
||||||
VersionInfo = namedtuple("VersionInfo", "major minor micro")
|
VersionInfo = namedtuple("VersionInfo", "major minor micro")
|
||||||
version_info = VersionInfo(major="1", minor="1", micro="6")
|
version_info = VersionInfo(major="1", minor="1", micro="10")
|
||||||
|
@@ -5,6 +5,7 @@ from bot_graphql.mutations.auto_role_mutation import AutoRoleMutation
|
|||||||
from bot_graphql.mutations.auto_role_rule_mutation import AutoRoleRuleMutation
|
from bot_graphql.mutations.auto_role_rule_mutation import AutoRoleRuleMutation
|
||||||
from bot_graphql.mutations.level_mutation import LevelMutation
|
from bot_graphql.mutations.level_mutation import LevelMutation
|
||||||
from bot_graphql.mutations.server_config_mutation import ServerConfigMutation
|
from bot_graphql.mutations.server_config_mutation import ServerConfigMutation
|
||||||
|
from bot_graphql.mutations.short_role_name_mutation import ShortRoleNameMutation
|
||||||
from bot_graphql.mutations.technician_config_mutation import TechnicianConfigMutation
|
from bot_graphql.mutations.technician_config_mutation import TechnicianConfigMutation
|
||||||
from bot_graphql.mutations.user_joined_game_server_mutation import UserJoinedGameServerMutation
|
from bot_graphql.mutations.user_joined_game_server_mutation import UserJoinedGameServerMutation
|
||||||
from bot_graphql.mutations.user_mutation import UserMutation
|
from bot_graphql.mutations.user_mutation import UserMutation
|
||||||
@@ -21,6 +22,7 @@ class Mutation(MutationType):
|
|||||||
user_joined_game_server: UserJoinedGameServerMutation,
|
user_joined_game_server: UserJoinedGameServerMutation,
|
||||||
technician_config: TechnicianConfigMutation,
|
technician_config: TechnicianConfigMutation,
|
||||||
server_config: ServerConfigMutation,
|
server_config: ServerConfigMutation,
|
||||||
|
short_role_name_mutation: ShortRoleNameMutation,
|
||||||
):
|
):
|
||||||
MutationType.__init__(self)
|
MutationType.__init__(self)
|
||||||
|
|
||||||
@@ -30,5 +32,6 @@ class Mutation(MutationType):
|
|||||||
self.set_field("user", lambda *_: user_mutation)
|
self.set_field("user", lambda *_: user_mutation)
|
||||||
self.set_field("achievement", lambda *_: achievement_mutation)
|
self.set_field("achievement", lambda *_: achievement_mutation)
|
||||||
self.set_field("userJoinedGameServer", lambda *_: user_joined_game_server)
|
self.set_field("userJoinedGameServer", lambda *_: user_joined_game_server)
|
||||||
|
self.set_field("shortRoleName", lambda *_: short_role_name_mutation)
|
||||||
self.set_field("technicianConfig", lambda *_: technician_config)
|
self.set_field("technicianConfig", lambda *_: technician_config)
|
||||||
self.set_field("serverConfig", lambda *_: server_config)
|
self.set_field("serverConfig", lambda *_: server_config)
|
||||||
|
@@ -1,10 +1,10 @@
|
|||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
"""
|
"""
|
||||||
bot Keksdose bot
|
bot sh-edraft.de Discord bot
|
||||||
~~~~~~~~~~~~~~~~~~~
|
~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
Discord bot for the Keksdose discord Server
|
Discord bot for customers of sh-edraft.de
|
||||||
|
|
||||||
:copyright: (c) 2022 - 2023 sh-edraft.de
|
:copyright: (c) 2022 - 2023 sh-edraft.de
|
||||||
:license: MIT, see LICENSE for more details.
|
:license: MIT, see LICENSE for more details.
|
||||||
@@ -15,7 +15,7 @@ __title__ = "bot_graphql.mutations"
|
|||||||
__author__ = "Sven Heidemann"
|
__author__ = "Sven Heidemann"
|
||||||
__license__ = "MIT"
|
__license__ = "MIT"
|
||||||
__copyright__ = "Copyright (c) 2022 - 2023 sh-edraft.de"
|
__copyright__ = "Copyright (c) 2022 - 2023 sh-edraft.de"
|
||||||
__version__ = "1.1.6"
|
__version__ = "1.1.10"
|
||||||
|
|
||||||
from collections import namedtuple
|
from collections import namedtuple
|
||||||
|
|
||||||
@@ -23,4 +23,4 @@ from collections import namedtuple
|
|||||||
# imports:
|
# imports:
|
||||||
|
|
||||||
VersionInfo = namedtuple("VersionInfo", "major minor micro")
|
VersionInfo = namedtuple("VersionInfo", "major minor micro")
|
||||||
version_info = VersionInfo(major="1", minor="1", micro="6")
|
version_info = VersionInfo(major="1", minor="1", micro="10")
|
||||||
|
@@ -13,7 +13,6 @@ from bot_data.model.server_team_role_ids_config import ServerTeamRoleIdsConfig
|
|||||||
from bot_data.model.team_member_type_enum import TeamMemberTypeEnum
|
from bot_data.model.team_member_type_enum import TeamMemberTypeEnum
|
||||||
from bot_data.model.user_role_enum import UserRoleEnum
|
from bot_data.model.user_role_enum import UserRoleEnum
|
||||||
from bot_graphql.abc.query_abc import QueryABC
|
from bot_graphql.abc.query_abc import QueryABC
|
||||||
from modules.permission.abc.permission_service_abc import PermissionServiceABC
|
|
||||||
|
|
||||||
|
|
||||||
class ServerConfigMutation(QueryABC):
|
class ServerConfigMutation(QueryABC):
|
||||||
@@ -25,7 +24,6 @@ class ServerConfigMutation(QueryABC):
|
|||||||
server_configs: ServerConfigRepositoryABC,
|
server_configs: ServerConfigRepositoryABC,
|
||||||
db: DatabaseContextABC,
|
db: DatabaseContextABC,
|
||||||
config_service: ConfigService,
|
config_service: ConfigService,
|
||||||
permissions: PermissionServiceABC,
|
|
||||||
):
|
):
|
||||||
QueryABC.__init__(self, "ServerConfigMutation")
|
QueryABC.__init__(self, "ServerConfigMutation")
|
||||||
|
|
||||||
@@ -35,7 +33,6 @@ class ServerConfigMutation(QueryABC):
|
|||||||
self._server_configs = server_configs
|
self._server_configs = server_configs
|
||||||
self._db = db
|
self._db = db
|
||||||
self._config_service = config_service
|
self._config_service = config_service
|
||||||
self._permissions = permissions
|
|
||||||
|
|
||||||
self.set_field("updateServerConfig", self.resolve_update_server_config)
|
self.set_field("updateServerConfig", self.resolve_update_server_config)
|
||||||
|
|
||||||
@@ -92,6 +89,11 @@ class ServerConfigMutation(QueryABC):
|
|||||||
server_config.default_role_id = (
|
server_config.default_role_id = (
|
||||||
input["defaultRoleId"] if "defaultRoleId" in input else server_config.default_role_id
|
input["defaultRoleId"] if "defaultRoleId" in input else server_config.default_role_id
|
||||||
)
|
)
|
||||||
|
server_config.short_role_name_only_set_highest_role = (
|
||||||
|
input["shortRoleNameOnlySetHighestRole"]
|
||||||
|
if "shortRoleNameOnlySetHighestRole" in input
|
||||||
|
else server_config.short_role_name_only_set_highest_role
|
||||||
|
)
|
||||||
server_config.feature_flags = (
|
server_config.feature_flags = (
|
||||||
dict(zip([x["key"] for x in input["featureFlags"]], [x["value"] for x in input["featureFlags"]]))
|
dict(zip([x["key"] for x in input["featureFlags"]], [x["value"] for x in input["featureFlags"]]))
|
||||||
if "featureFlags" in input
|
if "featureFlags" in input
|
||||||
@@ -178,4 +180,3 @@ class ServerConfigMutation(QueryABC):
|
|||||||
self._server_configs.add_server_team_role_id_config(role_id)
|
self._server_configs.add_server_team_role_id_config(role_id)
|
||||||
|
|
||||||
self._bot.loop.create_task(self._config_service.reload_server_config(new_config.server))
|
self._bot.loop.create_task(self._config_service.reload_server_config(new_config.server))
|
||||||
self._permissions.on_ready()
|
|
||||||
|
@@ -0,0 +1,85 @@
|
|||||||
|
from cpl_core.database.context import DatabaseContextABC
|
||||||
|
from cpl_discord.service import DiscordBotServiceABC
|
||||||
|
|
||||||
|
from bot_data.abc.server_repository_abc import ServerRepositoryABC
|
||||||
|
from bot_data.abc.short_role_name_repository_abc import ShortRoleNameRepositoryABC
|
||||||
|
from bot_data.model.short_role_name import ShortRoleName
|
||||||
|
from bot_data.model.user_role_enum import UserRoleEnum
|
||||||
|
from bot_graphql.abc.query_abc import QueryABC
|
||||||
|
from modules.permission.service.permission_service import PermissionService
|
||||||
|
|
||||||
|
|
||||||
|
class ShortRoleNameMutation(QueryABC):
|
||||||
|
def __init__(
|
||||||
|
self,
|
||||||
|
servers: ServerRepositoryABC,
|
||||||
|
short_role_names: ShortRoleNameRepositoryABC,
|
||||||
|
bot: DiscordBotServiceABC,
|
||||||
|
db: DatabaseContextABC,
|
||||||
|
permissions: PermissionService,
|
||||||
|
):
|
||||||
|
QueryABC.__init__(self, "ShortRoleNameMutation")
|
||||||
|
|
||||||
|
self._servers = servers
|
||||||
|
self._short_role_names = short_role_names
|
||||||
|
self._bot = bot
|
||||||
|
self._db = db
|
||||||
|
self._permissions = permissions
|
||||||
|
|
||||||
|
self.set_field("createShortRoleName", self.resolve_create_short_role_name)
|
||||||
|
self.set_field("updateShortRoleName", self.resolve_update_short_role_name)
|
||||||
|
self.set_field("deleteShortRoleName", self.resolve_delete_short_role_name)
|
||||||
|
|
||||||
|
def resolve_create_short_role_name(self, *_, input: dict):
|
||||||
|
server = self._servers.get_server_by_id(input["serverId"])
|
||||||
|
self._can_user_mutate_data(server, UserRoleEnum.admin)
|
||||||
|
|
||||||
|
short_role_name = ShortRoleName(
|
||||||
|
input["shortName"],
|
||||||
|
int(input["roleId"]),
|
||||||
|
input["position"],
|
||||||
|
server,
|
||||||
|
)
|
||||||
|
|
||||||
|
result = self._short_role_names.find_short_role_names_by_role_id(short_role_name.role_id)
|
||||||
|
if result.count() > 0:
|
||||||
|
raise ValueError("Short name for role already exists")
|
||||||
|
|
||||||
|
self._short_role_names.add_short_role_name(short_role_name)
|
||||||
|
self._db.save_changes()
|
||||||
|
|
||||||
|
def get_new_short_role_name(srn: ShortRoleName):
|
||||||
|
return (
|
||||||
|
srn.short_name == short_role_name.short_name
|
||||||
|
and srn.role_id == short_role_name.role_id
|
||||||
|
and srn.position.value == short_role_name.position
|
||||||
|
)
|
||||||
|
|
||||||
|
return (
|
||||||
|
self._short_role_names.get_short_role_names_by_server_id(short_role_name.server.id)
|
||||||
|
.where(get_new_short_role_name)
|
||||||
|
.last()
|
||||||
|
)
|
||||||
|
|
||||||
|
def resolve_update_short_role_name(self, *_, input: dict):
|
||||||
|
short_role_name = self._short_role_names.get_short_role_name_by_id(input["id"])
|
||||||
|
self._can_user_mutate_data(short_role_name.server, UserRoleEnum.moderator)
|
||||||
|
|
||||||
|
short_role_name.short_name = input["shortName"] if "shortName" in input else short_role_name.short_name
|
||||||
|
short_role_name.role_id = input["roleId"] if "roleId" in input else short_role_name.role_id
|
||||||
|
short_role_name.position = input["position"] if "position" in input else short_role_name.position
|
||||||
|
|
||||||
|
self._short_role_names.update_short_role_name(short_role_name)
|
||||||
|
self._db.save_changes()
|
||||||
|
|
||||||
|
short_role_name = self._short_role_names.get_short_role_name_by_id(input["id"])
|
||||||
|
return short_role_name
|
||||||
|
|
||||||
|
def resolve_delete_short_role_name(self, *_, id: int):
|
||||||
|
short_role_name = self._short_role_names.get_short_role_name_by_id(id)
|
||||||
|
self._can_user_mutate_data(short_role_name.server, UserRoleEnum.admin)
|
||||||
|
|
||||||
|
self._short_role_names.delete_short_role_name(short_role_name)
|
||||||
|
self._db.save_changes()
|
||||||
|
|
||||||
|
return short_role_name
|
@@ -11,8 +11,8 @@ from bot_data.model.technician_config import TechnicianConfig
|
|||||||
from bot_data.model.technician_id_config import TechnicianIdConfig
|
from bot_data.model.technician_id_config import TechnicianIdConfig
|
||||||
from bot_data.model.technician_ping_url_config import TechnicianPingUrlConfig
|
from bot_data.model.technician_ping_url_config import TechnicianPingUrlConfig
|
||||||
from bot_data.model.user_role_enum import UserRoleEnum
|
from bot_data.model.user_role_enum import UserRoleEnum
|
||||||
|
from bot_data.service.technician_config_seeder import TechnicianConfigSeeder
|
||||||
from bot_graphql.abc.query_abc import QueryABC
|
from bot_graphql.abc.query_abc import QueryABC
|
||||||
from modules.permission.abc.permission_service_abc import PermissionServiceABC
|
|
||||||
|
|
||||||
|
|
||||||
class TechnicianConfigMutation(QueryABC):
|
class TechnicianConfigMutation(QueryABC):
|
||||||
@@ -23,8 +23,8 @@ class TechnicianConfigMutation(QueryABC):
|
|||||||
servers: ServerRepositoryABC,
|
servers: ServerRepositoryABC,
|
||||||
technician_configs: TechnicianConfigRepositoryABC,
|
technician_configs: TechnicianConfigRepositoryABC,
|
||||||
db: DatabaseContextABC,
|
db: DatabaseContextABC,
|
||||||
permissions: PermissionServiceABC,
|
|
||||||
config_service: ConfigService,
|
config_service: ConfigService,
|
||||||
|
tech_seeder: TechnicianConfigSeeder,
|
||||||
):
|
):
|
||||||
QueryABC.__init__(self, "TechnicianConfigMutation")
|
QueryABC.__init__(self, "TechnicianConfigMutation")
|
||||||
|
|
||||||
@@ -33,12 +33,15 @@ class TechnicianConfigMutation(QueryABC):
|
|||||||
self._servers = servers
|
self._servers = servers
|
||||||
self._technician_configs = technician_configs
|
self._technician_configs = technician_configs
|
||||||
self._db = db
|
self._db = db
|
||||||
self._permissions = permissions
|
|
||||||
self._config_service = config_service
|
self._config_service = config_service
|
||||||
|
self._tech_seeder = tech_seeder
|
||||||
|
|
||||||
self.set_field("updateTechnicianConfig", self.resolve_update_technician_config)
|
self.set_field("updateTechnicianConfig", self.resolve_update_technician_config)
|
||||||
|
|
||||||
def resolve_update_technician_config(self, *_, input: dict):
|
def resolve_update_technician_config(self, *_, input: dict):
|
||||||
|
if not self._technician_configs.does_technician_config_exists():
|
||||||
|
self._bot.loop.create_task(self._tech_seeder.seed())
|
||||||
|
|
||||||
technician_config = self._technician_configs.get_technician_config()
|
technician_config = self._technician_configs.get_technician_config()
|
||||||
self._can_user_mutate_data(Route.get_user().users[0].server, UserRoleEnum.technician)
|
self._can_user_mutate_data(Route.get_user().users[0].server, UserRoleEnum.technician)
|
||||||
|
|
||||||
@@ -56,11 +59,16 @@ class TechnicianConfigMutation(QueryABC):
|
|||||||
technician_config.cache_max_messages = (
|
technician_config.cache_max_messages = (
|
||||||
input["cacheMaxMessages"] if "cacheMaxMessages" in input else technician_config.cache_max_messages
|
input["cacheMaxMessages"] if "cacheMaxMessages" in input else technician_config.cache_max_messages
|
||||||
)
|
)
|
||||||
|
old_feature_flags = technician_config.feature_flags
|
||||||
technician_config.feature_flags = (
|
technician_config.feature_flags = (
|
||||||
dict(zip([x["key"] for x in input["featureFlags"]], [x["value"] for x in input["featureFlags"]]))
|
dict(zip([x["key"] for x in input["featureFlags"]], [x["value"] for x in input["featureFlags"]]))
|
||||||
if "featureFlags" in input
|
if "featureFlags" in input
|
||||||
else technician_config.feature_flags
|
else technician_config.feature_flags
|
||||||
)
|
)
|
||||||
|
for old_flag in old_feature_flags:
|
||||||
|
if old_flag not in technician_config.feature_flags:
|
||||||
|
technician_config.feature_flags[old_flag] = False
|
||||||
|
|
||||||
technician_config.ping_urls = (
|
technician_config.ping_urls = (
|
||||||
List(str, input["pingURLs"]) if "pingURLs" in input else technician_config.ping_urls
|
List(str, input["pingURLs"]) if "pingURLs" in input else technician_config.ping_urls
|
||||||
)
|
)
|
||||||
@@ -78,6 +86,7 @@ class TechnicianConfigMutation(QueryABC):
|
|||||||
self._update_technician_ids(technician_config)
|
self._update_technician_ids(technician_config)
|
||||||
|
|
||||||
self._db.save_changes()
|
self._db.save_changes()
|
||||||
|
self._config_service.reload_technician_config()
|
||||||
return technician_config
|
return technician_config
|
||||||
|
|
||||||
def _update_ping_urls(self, new_config: TechnicianConfig):
|
def _update_ping_urls(self, new_config: TechnicianConfig):
|
||||||
@@ -112,6 +121,3 @@ class TechnicianConfigMutation(QueryABC):
|
|||||||
continue
|
continue
|
||||||
|
|
||||||
self._technician_configs.add_technician_id_config(TechnicianIdConfig(technician_id))
|
self._technician_configs.add_technician_id_config(TechnicianIdConfig(technician_id))
|
||||||
|
|
||||||
self._bot.loop.create_task(self._config_service.reload_technician_config())
|
|
||||||
self._permissions.on_ready()
|
|
||||||
|
@@ -1,10 +1,10 @@
|
|||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
"""
|
"""
|
||||||
bot Keksdose bot
|
bot sh-edraft.de Discord bot
|
||||||
~~~~~~~~~~~~~~~~~~~
|
~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
Discord bot for the Keksdose discord Server
|
Discord bot for customers of sh-edraft.de
|
||||||
|
|
||||||
:copyright: (c) 2022 - 2023 sh-edraft.de
|
:copyright: (c) 2022 - 2023 sh-edraft.de
|
||||||
:license: MIT, see LICENSE for more details.
|
:license: MIT, see LICENSE for more details.
|
||||||
@@ -15,7 +15,7 @@ __title__ = "bot_graphql.queries"
|
|||||||
__author__ = "Sven Heidemann"
|
__author__ = "Sven Heidemann"
|
||||||
__license__ = "MIT"
|
__license__ = "MIT"
|
||||||
__copyright__ = "Copyright (c) 2022 - 2023 sh-edraft.de"
|
__copyright__ = "Copyright (c) 2022 - 2023 sh-edraft.de"
|
||||||
__version__ = "1.1.6"
|
__version__ = "1.1.10"
|
||||||
|
|
||||||
from collections import namedtuple
|
from collections import namedtuple
|
||||||
|
|
||||||
@@ -23,4 +23,4 @@ from collections import namedtuple
|
|||||||
# imports:
|
# imports:
|
||||||
|
|
||||||
VersionInfo = namedtuple("VersionInfo", "major minor micro")
|
VersionInfo = namedtuple("VersionInfo", "major minor micro")
|
||||||
version_info = VersionInfo(major="1", minor="1", micro="6")
|
version_info = VersionInfo(major="1", minor="1", micro="10")
|
||||||
|
@@ -1,10 +1,10 @@
|
|||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
"""
|
"""
|
||||||
bot Keksdose bot
|
bot sh-edraft.de Discord bot
|
||||||
~~~~~~~~~~~~~~~~~~~
|
~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
Discord bot for the Keksdose discord Server
|
Discord bot for customers of sh-edraft.de
|
||||||
|
|
||||||
:copyright: (c) 2022 - 2023 sh-edraft.de
|
:copyright: (c) 2022 - 2023 sh-edraft.de
|
||||||
:license: MIT, see LICENSE for more details.
|
:license: MIT, see LICENSE for more details.
|
||||||
@@ -15,7 +15,7 @@ __title__ = "bot_graphql.queries.discord"
|
|||||||
__author__ = "Sven Heidemann"
|
__author__ = "Sven Heidemann"
|
||||||
__license__ = "MIT"
|
__license__ = "MIT"
|
||||||
__copyright__ = "Copyright (c) 2022 - 2023 sh-edraft.de"
|
__copyright__ = "Copyright (c) 2022 - 2023 sh-edraft.de"
|
||||||
__version__ = "1.1.6"
|
__version__ = "1.1.10"
|
||||||
|
|
||||||
from collections import namedtuple
|
from collections import namedtuple
|
||||||
|
|
||||||
@@ -23,4 +23,4 @@ from collections import namedtuple
|
|||||||
# imports:
|
# imports:
|
||||||
|
|
||||||
VersionInfo = namedtuple("VersionInfo", "major minor micro")
|
VersionInfo = namedtuple("VersionInfo", "major minor micro")
|
||||||
version_info = VersionInfo(major="1", minor="1", micro="6")
|
version_info = VersionInfo(major="1", minor="1", micro="10")
|
||||||
|
@@ -1,3 +1,4 @@
|
|||||||
|
import discord
|
||||||
from cpl_discord.service import DiscordBotServiceABC
|
from cpl_discord.service import DiscordBotServiceABC
|
||||||
from cpl_query.extension import List
|
from cpl_query.extension import List
|
||||||
from discord import Guild
|
from discord import Guild
|
||||||
@@ -17,22 +18,24 @@ class GuildQuery(QueryABC):
|
|||||||
self.set_field("id", lambda g, *_: g.id)
|
self.set_field("id", lambda g, *_: g.id)
|
||||||
self.set_field("name", lambda g, *_: g.name)
|
self.set_field("name", lambda g, *_: g.name)
|
||||||
self.set_field("channels", self._resolve_channels)
|
self.set_field("channels", self._resolve_channels)
|
||||||
self.set_field("roles", lambda g, *_: g.roles)
|
self.set_field("roles", lambda g, *_: g.roles.order_by(lambda x: x.position))
|
||||||
self.set_field("emojis", lambda g, *_: g.emojis)
|
self.set_field(
|
||||||
|
"emojis", lambda g, *_: List(discord.Emoji, g.emojis).order_by_descending(lambda x: x.created_at)
|
||||||
|
)
|
||||||
|
|
||||||
def _resolve_channels(self, g: Guild, *_, filter=None):
|
def _resolve_channels(self, g: Guild, *_, filter=None):
|
||||||
users = List(any).extend(g.channels)
|
channels = List(any).extend(g.channels)
|
||||||
|
|
||||||
if filter is None:
|
if filter is None:
|
||||||
return users
|
return channels
|
||||||
|
|
||||||
if "id" in filter:
|
if "id" in filter:
|
||||||
users = users.where(lambda c: c.id == int(filter["id"]))
|
channels = channels.where(lambda c: c.id == int(filter["id"]))
|
||||||
|
|
||||||
if "name" in filter:
|
if "name" in filter:
|
||||||
users = users.where(lambda c: c.id == filter["name"])
|
channels = channels.where(lambda c: c.id == filter["name"])
|
||||||
|
|
||||||
if "type" in filter:
|
if "type" in filter:
|
||||||
users = users.where(lambda c: type(c).__name__ == filter["type"])
|
channels = channels.where(lambda c: type(c).__name__ == filter["type"])
|
||||||
|
|
||||||
return users
|
return channels.order_by(lambda x: x.position)
|
||||||
|
@@ -25,6 +25,9 @@ class ServerConfigQuery(DataQueryWithHistoryABC):
|
|||||||
self.set_field("teamChannelId", lambda config, *_: config.team_channel_id)
|
self.set_field("teamChannelId", lambda config, *_: config.team_channel_id)
|
||||||
self.set_field("loginMessageChannelId", lambda config, *_: config.login_message_channel_id)
|
self.set_field("loginMessageChannelId", lambda config, *_: config.login_message_channel_id)
|
||||||
self.set_field("defaultRoleId", lambda config, *_: config.default_role_id)
|
self.set_field("defaultRoleId", lambda config, *_: config.default_role_id)
|
||||||
|
self.set_field(
|
||||||
|
"shortRoleNameOnlySetHighestRole", lambda config, *_: config.short_role_name_only_set_highest_role
|
||||||
|
)
|
||||||
self.add_collection(
|
self.add_collection(
|
||||||
"featureFlag",
|
"featureFlag",
|
||||||
lambda config, *_: List(any, [{"key": x, "value": config.feature_flags[x]} for x in config.feature_flags]),
|
lambda config, *_: List(any, [{"key": x, "value": config.feature_flags[x]} for x in config.feature_flags]),
|
||||||
|
@@ -1,28 +1,35 @@
|
|||||||
|
from cpl_core.configuration import ConfigurationABC
|
||||||
from cpl_core.database.context import DatabaseContextABC
|
from cpl_core.database.context import DatabaseContextABC
|
||||||
from cpl_discord.service import DiscordBotServiceABC
|
from cpl_discord.service import DiscordBotServiceABC
|
||||||
|
|
||||||
|
from bot_core.configuration.feature_flags_enum import FeatureFlagsEnum
|
||||||
|
from bot_core.configuration.feature_flags_settings import FeatureFlagsSettings
|
||||||
from bot_data.abc.achievement_repository_abc import AchievementRepositoryABC
|
from bot_data.abc.achievement_repository_abc import AchievementRepositoryABC
|
||||||
from bot_data.abc.auto_role_repository_abc import AutoRoleRepositoryABC
|
from bot_data.abc.auto_role_repository_abc import AutoRoleRepositoryABC
|
||||||
from bot_data.abc.client_repository_abc import ClientRepositoryABC
|
from bot_data.abc.client_repository_abc import ClientRepositoryABC
|
||||||
from bot_data.abc.game_server_repository_abc import GameServerRepositoryABC
|
from bot_data.abc.game_server_repository_abc import GameServerRepositoryABC
|
||||||
from bot_data.abc.level_repository_abc import LevelRepositoryABC
|
from bot_data.abc.level_repository_abc import LevelRepositoryABC
|
||||||
from bot_data.abc.server_config_repository_abc import ServerConfigRepositoryABC
|
from bot_data.abc.server_config_repository_abc import ServerConfigRepositoryABC
|
||||||
|
from bot_data.abc.short_role_name_repository_abc import ShortRoleNameRepositoryABC
|
||||||
from bot_data.abc.user_joined_server_repository_abc import UserJoinedServerRepositoryABC
|
from bot_data.abc.user_joined_server_repository_abc import UserJoinedServerRepositoryABC
|
||||||
from bot_data.abc.user_joined_voice_channel_repository_abc import UserJoinedVoiceChannelRepositoryABC
|
from bot_data.abc.user_joined_voice_channel_repository_abc import UserJoinedVoiceChannelRepositoryABC
|
||||||
from bot_data.abc.user_repository_abc import UserRepositoryABC
|
from bot_data.abc.user_repository_abc import UserRepositoryABC
|
||||||
from bot_data.model.server import Server
|
from bot_data.model.server import Server
|
||||||
|
from bot_data.model.server_config import ServerConfig
|
||||||
from bot_data.model.server_history import ServerHistory
|
from bot_data.model.server_history import ServerHistory
|
||||||
from bot_graphql.abc.data_query_with_history_abc import DataQueryWithHistoryABC
|
from bot_graphql.abc.data_query_with_history_abc import DataQueryWithHistoryABC
|
||||||
from bot_graphql.filter.achievement_filter import AchievementFilter
|
from bot_graphql.filter.achievement_filter import AchievementFilter
|
||||||
from bot_graphql.filter.auto_role_filter import AutoRoleFilter
|
from bot_graphql.filter.auto_role_filter import AutoRoleFilter
|
||||||
from bot_graphql.filter.client_filter import ClientFilter
|
from bot_graphql.filter.client_filter import ClientFilter
|
||||||
from bot_graphql.filter.level_filter import LevelFilter
|
from bot_graphql.filter.level_filter import LevelFilter
|
||||||
|
from bot_graphql.filter.short_role_name_filter import ShortRoleNameFilter
|
||||||
from bot_graphql.filter.user_filter import UserFilter
|
from bot_graphql.filter.user_filter import UserFilter
|
||||||
|
|
||||||
|
|
||||||
class ServerQuery(DataQueryWithHistoryABC):
|
class ServerQuery(DataQueryWithHistoryABC):
|
||||||
def __init__(
|
def __init__(
|
||||||
self,
|
self,
|
||||||
|
config: ConfigurationABC,
|
||||||
bot: DiscordBotServiceABC,
|
bot: DiscordBotServiceABC,
|
||||||
db: DatabaseContextABC,
|
db: DatabaseContextABC,
|
||||||
auto_roles: AutoRoleRepositoryABC,
|
auto_roles: AutoRoleRepositoryABC,
|
||||||
@@ -33,10 +40,12 @@ class ServerQuery(DataQueryWithHistoryABC):
|
|||||||
ujs: UserJoinedServerRepositoryABC,
|
ujs: UserJoinedServerRepositoryABC,
|
||||||
ujvs: UserJoinedVoiceChannelRepositoryABC,
|
ujvs: UserJoinedVoiceChannelRepositoryABC,
|
||||||
achievements: AchievementRepositoryABC,
|
achievements: AchievementRepositoryABC,
|
||||||
|
short_role_names: ShortRoleNameRepositoryABC,
|
||||||
server_configs: ServerConfigRepositoryABC,
|
server_configs: ServerConfigRepositoryABC,
|
||||||
):
|
):
|
||||||
DataQueryWithHistoryABC.__init__(self, "Server", "ServersHistory", ServerHistory, db)
|
DataQueryWithHistoryABC.__init__(self, "Server", "ServersHistory", ServerHistory, db)
|
||||||
|
|
||||||
|
self._config = config
|
||||||
self._bot = bot
|
self._bot = bot
|
||||||
self._auto_roles = auto_roles
|
self._auto_roles = auto_roles
|
||||||
self._clients = clients
|
self._clients = clients
|
||||||
@@ -64,7 +73,15 @@ class ServerQuery(DataQueryWithHistoryABC):
|
|||||||
self.add_collection(
|
self.add_collection(
|
||||||
"achievement", lambda server, *_: achievements.get_achievements_by_server_id(server.id), AchievementFilter
|
"achievement", lambda server, *_: achievements.get_achievements_by_server_id(server.id), AchievementFilter
|
||||||
)
|
)
|
||||||
|
self.add_collection(
|
||||||
|
"shortRoleName",
|
||||||
|
lambda server, *_: short_role_names.get_short_role_names_by_server_id(server.id),
|
||||||
|
ShortRoleNameFilter,
|
||||||
|
)
|
||||||
self.set_field("config", lambda server, *_: server_configs.get_server_config_by_server(server.id))
|
self.set_field("config", lambda server, *_: server_configs.get_server_config_by_server(server.id))
|
||||||
|
self.set_field(
|
||||||
|
"hasFeatureFlag", lambda server, *_, **kwargs: self._resolve_has_feature_flag(server, *_, **kwargs)
|
||||||
|
)
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def resolve_id(server: Server, *_):
|
def resolve_id(server: Server, *_):
|
||||||
@@ -81,3 +98,12 @@ class ServerQuery(DataQueryWithHistoryABC):
|
|||||||
@staticmethod
|
@staticmethod
|
||||||
def resolve_icon_url(server: Server, *_):
|
def resolve_icon_url(server: Server, *_):
|
||||||
return server.icon_url
|
return server.icon_url
|
||||||
|
|
||||||
|
def _resolve_has_feature_flag(self, server: Server, *_, **kwargs):
|
||||||
|
settings: ServerConfig = self._config.get_configuration(f"ServerConfig_{server.discord_id}")
|
||||||
|
if "flag" not in kwargs:
|
||||||
|
return False
|
||||||
|
return {
|
||||||
|
"key": kwargs["flag"],
|
||||||
|
"value": FeatureFlagsSettings.get_flag_from_dict(settings.feature_flags, FeatureFlagsEnum(kwargs["flag"])),
|
||||||
|
}
|
||||||
|
@@ -0,0 +1,11 @@
|
|||||||
|
from bot_graphql.abc.history_query_abc import HistoryQueryABC
|
||||||
|
|
||||||
|
|
||||||
|
class ShortRoleNameHistoryQuery(HistoryQueryABC):
|
||||||
|
def __init__(self):
|
||||||
|
HistoryQueryABC.__init__(self, "ShortRoleName")
|
||||||
|
|
||||||
|
self.set_field("id", lambda x, *_: x.id)
|
||||||
|
self.set_field("shortName", lambda x, *_: x.shortName)
|
||||||
|
self.set_field("roleId", lambda x, *_: x.roleId)
|
||||||
|
self.set_field("position", lambda x, *_: x.position.value)
|
18
kdb-bot/src/bot_graphql/queries/short_role_name_query.py
Normal file
18
kdb-bot/src/bot_graphql/queries/short_role_name_query.py
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
from cpl_core.database.context import DatabaseContextABC
|
||||||
|
|
||||||
|
from bot_data.model.short_role_name_history import ShortRoleNameHistory
|
||||||
|
from bot_graphql.abc.data_query_with_history_abc import DataQueryWithHistoryABC
|
||||||
|
|
||||||
|
|
||||||
|
class ShortRoleNameQuery(DataQueryWithHistoryABC):
|
||||||
|
def __init__(
|
||||||
|
self,
|
||||||
|
db: DatabaseContextABC,
|
||||||
|
):
|
||||||
|
DataQueryWithHistoryABC.__init__(self, "ShortRoleName", "ShortRoleNamesHistory", ShortRoleNameHistory, db)
|
||||||
|
|
||||||
|
self.set_field("id", lambda x, *_: x.id)
|
||||||
|
self.set_field("shortName", lambda x, *_: x.short_name)
|
||||||
|
self.set_field("roleId", lambda x, *_: x.role_id)
|
||||||
|
self.set_field("roleName", lambda x, *_: x.role_name)
|
||||||
|
self.set_field("position", lambda x, *_: x.position.value)
|
@@ -9,11 +9,13 @@ from bot_data.abc.game_server_repository_abc import GameServerRepositoryABC
|
|||||||
from bot_data.abc.known_user_repository_abc import KnownUserRepositoryABC
|
from bot_data.abc.known_user_repository_abc import KnownUserRepositoryABC
|
||||||
from bot_data.abc.level_repository_abc import LevelRepositoryABC
|
from bot_data.abc.level_repository_abc import LevelRepositoryABC
|
||||||
from bot_data.abc.server_repository_abc import ServerRepositoryABC
|
from bot_data.abc.server_repository_abc import ServerRepositoryABC
|
||||||
|
from bot_data.abc.short_role_name_repository_abc import ShortRoleNameRepositoryABC
|
||||||
from bot_data.abc.technician_config_repository_abc import TechnicianConfigRepositoryABC
|
from bot_data.abc.technician_config_repository_abc import TechnicianConfigRepositoryABC
|
||||||
from bot_data.abc.user_joined_game_server_repository_abc import UserJoinedGameServerRepositoryABC
|
from bot_data.abc.user_joined_game_server_repository_abc import UserJoinedGameServerRepositoryABC
|
||||||
from bot_data.abc.user_joined_server_repository_abc import UserJoinedServerRepositoryABC
|
from bot_data.abc.user_joined_server_repository_abc import UserJoinedServerRepositoryABC
|
||||||
from bot_data.abc.user_joined_voice_channel_repository_abc import UserJoinedVoiceChannelRepositoryABC
|
from bot_data.abc.user_joined_voice_channel_repository_abc import UserJoinedVoiceChannelRepositoryABC
|
||||||
from bot_data.abc.user_repository_abc import UserRepositoryABC
|
from bot_data.abc.user_repository_abc import UserRepositoryABC
|
||||||
|
from bot_data.model.short_role_name_position_enum import ShortRoleNamePositionEnum
|
||||||
from bot_graphql.abc.query_abc import QueryABC
|
from bot_graphql.abc.query_abc import QueryABC
|
||||||
from bot_graphql.filter.achievement_filter import AchievementFilter
|
from bot_graphql.filter.achievement_filter import AchievementFilter
|
||||||
from bot_graphql.filter.auto_role_filter import AutoRoleFilter
|
from bot_graphql.filter.auto_role_filter import AutoRoleFilter
|
||||||
@@ -21,6 +23,7 @@ from bot_graphql.filter.auto_role_rule_filter import AutoRoleRuleFilter
|
|||||||
from bot_graphql.filter.client_filter import ClientFilter
|
from bot_graphql.filter.client_filter import ClientFilter
|
||||||
from bot_graphql.filter.level_filter import LevelFilter
|
from bot_graphql.filter.level_filter import LevelFilter
|
||||||
from bot_graphql.filter.server_filter import ServerFilter
|
from bot_graphql.filter.server_filter import ServerFilter
|
||||||
|
from bot_graphql.filter.short_role_name_filter import ShortRoleNameFilter
|
||||||
from bot_graphql.filter.user_filter import UserFilter
|
from bot_graphql.filter.user_filter import UserFilter
|
||||||
from bot_graphql.filter.user_joined_game_server_filter import UserJoinedGameServerFilter
|
from bot_graphql.filter.user_joined_game_server_filter import UserJoinedGameServerFilter
|
||||||
from bot_graphql.filter.user_joined_server_filter import UserJoinedServerFilter
|
from bot_graphql.filter.user_joined_server_filter import UserJoinedServerFilter
|
||||||
@@ -44,6 +47,7 @@ class Query(QueryABC):
|
|||||||
user_joined_game_server: UserJoinedGameServerRepositoryABC,
|
user_joined_game_server: UserJoinedGameServerRepositoryABC,
|
||||||
users: UserRepositoryABC,
|
users: UserRepositoryABC,
|
||||||
achievements: AchievementRepositoryABC,
|
achievements: AchievementRepositoryABC,
|
||||||
|
short_role_names: ShortRoleNameRepositoryABC,
|
||||||
achievement_service: AchievementService,
|
achievement_service: AchievementService,
|
||||||
technician_config: TechnicianConfigRepositoryABC,
|
technician_config: TechnicianConfigRepositoryABC,
|
||||||
):
|
):
|
||||||
@@ -71,9 +75,12 @@ class Query(QueryABC):
|
|||||||
)
|
)
|
||||||
self.add_collection("user", lambda *_: users.get_users(), UserFilter)
|
self.add_collection("user", lambda *_: users.get_users(), UserFilter)
|
||||||
self.add_collection("achievement", lambda *_: achievements.get_achievements(), AchievementFilter)
|
self.add_collection("achievement", lambda *_: achievements.get_achievements(), AchievementFilter)
|
||||||
|
self.add_collection("shortRoleName", lambda *_: short_role_names.get_short_role_names(), ShortRoleNameFilter)
|
||||||
|
|
||||||
self.set_field("technicianConfig", lambda *_: technician_config.get_technician_config())
|
self.set_field("technicianConfig", lambda *_: technician_config.get_technician_config())
|
||||||
|
|
||||||
self.set_field("achievementAttributes", lambda *_: achievement_service.get_attributes())
|
self.set_field("achievementAttributes", lambda *_: achievement_service.get_attributes())
|
||||||
self.set_field("achievementOperators", lambda *_: achievement_service.get_operators())
|
self.set_field("achievementOperators", lambda *_: achievement_service.get_operators())
|
||||||
|
self.set_field("shortRoleNamePositions", lambda *_: [x.value for x in ShortRoleNamePositionEnum])
|
||||||
self.set_field("possibleFeatureFlags", lambda *_: [e.value for e in FeatureFlagsEnum])
|
self.set_field("possibleFeatureFlags", lambda *_: [e.value for e in FeatureFlagsEnum])
|
||||||
self.set_field("discord", lambda *_: Discord(bot.guilds, List(any).extend(bot.users)))
|
self.set_field("discord", lambda *_: Discord(bot.guilds, List(any).extend(bot.users)))
|
||||||
|
@@ -1,10 +1,10 @@
|
|||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
"""
|
"""
|
||||||
bot Keksdose bot
|
bot sh-edraft.de Discord bot
|
||||||
~~~~~~~~~~~~~~~~~~~
|
~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
Discord bot for the Keksdose discord Server
|
Discord bot for customers of sh-edraft.de
|
||||||
|
|
||||||
:copyright: (c) 2022 - 2023 sh-edraft.de
|
:copyright: (c) 2022 - 2023 sh-edraft.de
|
||||||
:license: MIT, see LICENSE for more details.
|
:license: MIT, see LICENSE for more details.
|
||||||
@@ -15,7 +15,7 @@ __title__ = "modules.achievements"
|
|||||||
__author__ = "Sven Heidemann"
|
__author__ = "Sven Heidemann"
|
||||||
__license__ = "MIT"
|
__license__ = "MIT"
|
||||||
__copyright__ = "Copyright (c) 2022 - 2023 sh-edraft.de"
|
__copyright__ = "Copyright (c) 2022 - 2023 sh-edraft.de"
|
||||||
__version__ = "1.1.6"
|
__version__ = "1.1.10"
|
||||||
|
|
||||||
from collections import namedtuple
|
from collections import namedtuple
|
||||||
|
|
||||||
@@ -23,4 +23,4 @@ from collections import namedtuple
|
|||||||
# imports
|
# imports
|
||||||
|
|
||||||
VersionInfo = namedtuple("VersionInfo", "major minor micro")
|
VersionInfo = namedtuple("VersionInfo", "major minor micro")
|
||||||
version_info = VersionInfo(major="1", minor="1", micro="6")
|
version_info = VersionInfo(major="1", minor="1", micro="10")
|
||||||
|
@@ -4,7 +4,7 @@
|
|||||||
"Version": {
|
"Version": {
|
||||||
"Major": "1",
|
"Major": "1",
|
||||||
"Minor": "1",
|
"Minor": "1",
|
||||||
"Micro": "6"
|
"Micro": "10"
|
||||||
},
|
},
|
||||||
"Author": "Sven Heidemann",
|
"Author": "Sven Heidemann",
|
||||||
"AuthorEmail": "sven.heidemann@sh-edraft.de",
|
"AuthorEmail": "sven.heidemann@sh-edraft.de",
|
||||||
@@ -16,10 +16,10 @@
|
|||||||
"LicenseName": "MIT",
|
"LicenseName": "MIT",
|
||||||
"LicenseDescription": "MIT, see LICENSE for more details.",
|
"LicenseDescription": "MIT, see LICENSE for more details.",
|
||||||
"Dependencies": [
|
"Dependencies": [
|
||||||
"cpl-core>=1.1.1"
|
"cpl-core>=1.1.7"
|
||||||
],
|
],
|
||||||
"DevDependencies": [
|
"DevDependencies": [
|
||||||
"cpl-cli>=1.1.1"
|
"cpl-cli>=1.1.7"
|
||||||
],
|
],
|
||||||
"PythonVersion": ">=3.10.4",
|
"PythonVersion": ">=3.10.4",
|
||||||
"PythonPath": {},
|
"PythonPath": {},
|
||||||
|
@@ -1,10 +1,10 @@
|
|||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
"""
|
"""
|
||||||
bot Keksdose bot
|
bot sh-edraft.de Discord bot
|
||||||
~~~~~~~~~~~~~~~~~~~
|
~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
Discord bot for the Keksdose discord Server
|
Discord bot for customers of sh-edraft.de
|
||||||
|
|
||||||
:copyright: (c) 2022 - 2023 sh-edraft.de
|
:copyright: (c) 2022 - 2023 sh-edraft.de
|
||||||
:license: MIT, see LICENSE for more details.
|
:license: MIT, see LICENSE for more details.
|
||||||
@@ -15,7 +15,7 @@ __title__ = "modules.achievements.commands"
|
|||||||
__author__ = "Sven Heidemann"
|
__author__ = "Sven Heidemann"
|
||||||
__license__ = "MIT"
|
__license__ = "MIT"
|
||||||
__copyright__ = "Copyright (c) 2022 - 2023 sh-edraft.de"
|
__copyright__ = "Copyright (c) 2022 - 2023 sh-edraft.de"
|
||||||
__version__ = "1.1.6"
|
__version__ = "1.1.10"
|
||||||
|
|
||||||
from collections import namedtuple
|
from collections import namedtuple
|
||||||
|
|
||||||
@@ -23,4 +23,4 @@ from collections import namedtuple
|
|||||||
# imports
|
# imports
|
||||||
|
|
||||||
VersionInfo = namedtuple("VersionInfo", "major minor micro")
|
VersionInfo = namedtuple("VersionInfo", "major minor micro")
|
||||||
version_info = VersionInfo(major="1", minor="1", micro="6")
|
version_info = VersionInfo(major="1", minor="1", micro="10")
|
||||||
|
@@ -1,10 +1,10 @@
|
|||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
"""
|
"""
|
||||||
bot Keksdose bot
|
bot sh-edraft.de Discord bot
|
||||||
~~~~~~~~~~~~~~~~~~~
|
~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
Discord bot for the Keksdose discord Server
|
Discord bot for customers of sh-edraft.de
|
||||||
|
|
||||||
:copyright: (c) 2022 - 2023 sh-edraft.de
|
:copyright: (c) 2022 - 2023 sh-edraft.de
|
||||||
:license: MIT, see LICENSE for more details.
|
:license: MIT, see LICENSE for more details.
|
||||||
@@ -15,7 +15,7 @@ __title__ = "modules.achievements.events"
|
|||||||
__author__ = "Sven Heidemann"
|
__author__ = "Sven Heidemann"
|
||||||
__license__ = "MIT"
|
__license__ = "MIT"
|
||||||
__copyright__ = "Copyright (c) 2022 - 2023 sh-edraft.de"
|
__copyright__ = "Copyright (c) 2022 - 2023 sh-edraft.de"
|
||||||
__version__ = "1.1.6"
|
__version__ = "1.1.10"
|
||||||
|
|
||||||
from collections import namedtuple
|
from collections import namedtuple
|
||||||
|
|
||||||
@@ -23,4 +23,4 @@ from collections import namedtuple
|
|||||||
# imports
|
# imports
|
||||||
|
|
||||||
VersionInfo = namedtuple("VersionInfo", "major minor micro")
|
VersionInfo = namedtuple("VersionInfo", "major minor micro")
|
||||||
version_info = VersionInfo(major="1", minor="1", micro="6")
|
version_info = VersionInfo(major="1", minor="1", micro="10")
|
||||||
|
@@ -1,10 +1,10 @@
|
|||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
"""
|
"""
|
||||||
bot Keksdose bot
|
bot sh-edraft.de Discord bot
|
||||||
~~~~~~~~~~~~~~~~~~~
|
~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
Discord bot for the Keksdose discord Server
|
Discord bot for customers of sh-edraft.de
|
||||||
|
|
||||||
:copyright: (c) 2022 - 2023 sh-edraft.de
|
:copyright: (c) 2022 - 2023 sh-edraft.de
|
||||||
:license: MIT, see LICENSE for more details.
|
:license: MIT, see LICENSE for more details.
|
||||||
@@ -15,7 +15,7 @@ __title__ = "modules.achievements.model"
|
|||||||
__author__ = "Sven Heidemann"
|
__author__ = "Sven Heidemann"
|
||||||
__license__ = "MIT"
|
__license__ = "MIT"
|
||||||
__copyright__ = "Copyright (c) 2022 - 2023 sh-edraft.de"
|
__copyright__ = "Copyright (c) 2022 - 2023 sh-edraft.de"
|
||||||
__version__ = "1.1.6"
|
__version__ = "1.1.10"
|
||||||
|
|
||||||
from collections import namedtuple
|
from collections import namedtuple
|
||||||
|
|
||||||
@@ -23,4 +23,4 @@ from collections import namedtuple
|
|||||||
# imports
|
# imports
|
||||||
|
|
||||||
VersionInfo = namedtuple("VersionInfo", "major minor micro")
|
VersionInfo = namedtuple("VersionInfo", "major minor micro")
|
||||||
version_info = VersionInfo(major="1", minor="1", micro="6")
|
version_info = VersionInfo(major="1", minor="1", micro="10")
|
||||||
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user