Merge pull request 'staging' (#483) from staging into master
All checks were successful
Deploy prod on push / pre-build (push) Successful in 2s
Deploy prod on push / build-bot (push) Successful in 1m30s
Deploy prod on push / build-web (push) Successful in 1m29s
Deploy prod on push / deploy (push) Successful in 19s

Reviewed-on: #483
This commit is contained in:
Sven Heidemann 2025-01-10 15:05:37 +01:00
commit 65d04785b1
130 changed files with 2004 additions and 525 deletions

View File

@ -7,7 +7,7 @@ on:
jobs: jobs:
pre-build: pre-build:
runs-on: [ dobby.sh-edraft.de, ubuntu-latest ] runs-on: [ dobby ]
container: git.sh-edraft.de/sh-edraft.de/act-runner:latest container: git.sh-edraft.de/sh-edraft.de/act-runner:latest
steps: steps:
- name: Shutdown stack - name: Shutdown stack
@ -15,13 +15,9 @@ jobs:
build-bot: build-bot:
needs: pre-build needs: pre-build
runs-on: [ dobby.sh-edraft.de, ubuntu-latest ] runs-on: [ dobby ]
container: git.sh-edraft.de/sh-edraft.de/act-runner:latest container: git.sh-edraft.de/sh-edraft.de/act-runner:latest
steps: steps:
- name: Setup docker
uses: https://github.com/papodaca/install-docker-action@main
- run: docker -v
- name: Clone Repository - name: Clone Repository
uses: https://github.com/actions/checkout@v3 uses: https://github.com/actions/checkout@v3
with: with:
@ -55,13 +51,9 @@ jobs:
build-web: build-web:
needs: pre-build needs: pre-build
runs-on: [ dobby.sh-edraft.de, ubuntu-latest ] runs-on: [ dobby ]
container: git.sh-edraft.de/sh-edraft.de/act-runner:latest container: git.sh-edraft.de/sh-edraft.de/act-runner:latest
steps: steps:
- name: Setup docker
uses: https://github.com/papodaca/install-docker-action@main
- run: docker -v
- name: Clone Repository - name: Clone Repository
uses: https://github.com/actions/checkout@v3 uses: https://github.com/actions/checkout@v3
with: with:
@ -99,7 +91,7 @@ jobs:
deploy: deploy:
needs: [ build-bot, build-web ] needs: [ build-bot, build-web ]
runs-on: [ dobby.sh-edraft.de, ubuntu-latest ] runs-on: [ dobby ]
container: git.sh-edraft.de/sh-edraft.de/act-runner:latest container: git.sh-edraft.de/sh-edraft.de/act-runner:latest
steps: steps:
- name: Clone Repository - name: Clone Repository

View File

@ -7,7 +7,7 @@ on:
jobs: jobs:
pre-build: pre-build:
runs-on: [ dobby.sh-edraft.de, ubuntu-latest ] runs-on: [ dobby ]
container: git.sh-edraft.de/sh-edraft.de/act-runner:latest container: git.sh-edraft.de/sh-edraft.de/act-runner:latest
steps: steps:
- name: Shutdown stack - name: Shutdown stack
@ -15,13 +15,9 @@ jobs:
build-bot: build-bot:
needs: pre-build needs: pre-build
runs-on: [ dobby.sh-edraft.de, ubuntu-latest ] runs-on: [ dobby ]
container: git.sh-edraft.de/sh-edraft.de/act-runner:latest container: git.sh-edraft.de/sh-edraft.de/act-runner:latest
steps: steps:
- name: Setup docker
uses: https://github.com/papodaca/install-docker-action@main
- run: docker -v
- name: Clone Repository - name: Clone Repository
uses: https://github.com/actions/checkout@v3 uses: https://github.com/actions/checkout@v3
with: with:
@ -55,13 +51,9 @@ jobs:
build-web: build-web:
needs: pre-build needs: pre-build
runs-on: [ dobby.sh-edraft.de, ubuntu-latest ] runs-on: [ dobby ]
container: git.sh-edraft.de/sh-edraft.de/act-runner:latest container: git.sh-edraft.de/sh-edraft.de/act-runner:latest
steps: steps:
- name: Setup docker
uses: https://github.com/papodaca/install-docker-action@main
- run: docker -v
- name: Clone Repository - name: Clone Repository
uses: https://github.com/actions/checkout@v3 uses: https://github.com/actions/checkout@v3
with: with:
@ -98,7 +90,7 @@ jobs:
deploy: deploy:
needs: [ build-bot, build-web ] needs: [ build-bot, build-web ]
runs-on: [ dobby.sh-edraft.de, ubuntu-latest ] runs-on: [ dobby ]
container: git.sh-edraft.de/sh-edraft.de/act-runner:latest container: git.sh-edraft.de/sh-edraft.de/act-runner:latest
steps: steps:
- name: Clone Repository - name: Clone Repository

View File

@ -7,7 +7,7 @@ on:
jobs: jobs:
pre-build: pre-build:
runs-on: [ dobby.sh-edraft.de, ubuntu-latest ] runs-on: [ dobby ]
container: git.sh-edraft.de/sh-edraft.de/act-runner:latest container: git.sh-edraft.de/sh-edraft.de/act-runner:latest
steps: steps:
- name: Shutdown stack - name: Shutdown stack
@ -15,13 +15,9 @@ jobs:
build-bot: build-bot:
needs: pre-build needs: pre-build
runs-on: [ dobby.sh-edraft.de, ubuntu-latest ] runs-on: [ dobby ]
container: git.sh-edraft.de/sh-edraft.de/act-runner:latest container: git.sh-edraft.de/sh-edraft.de/act-runner:latest
steps: steps:
- name: Setup docker
uses: https://github.com/papodaca/install-docker-action@main
- run: docker -v
- name: Clone Repository - name: Clone Repository
uses: https://github.com/actions/checkout@v3 uses: https://github.com/actions/checkout@v3
with: with:
@ -55,13 +51,9 @@ jobs:
build-web: build-web:
needs: pre-build needs: pre-build
runs-on: [ dobby.sh-edraft.de, ubuntu-latest ] runs-on: [ dobby ]
container: git.sh-edraft.de/sh-edraft.de/act-runner:latest container: git.sh-edraft.de/sh-edraft.de/act-runner:latest
steps: steps:
- name: Setup docker
uses: https://github.com/papodaca/install-docker-action@main
- run: docker -v
- name: Clone Repository - name: Clone Repository
uses: https://github.com/actions/checkout@v3 uses: https://github.com/actions/checkout@v3
with: with:
@ -99,7 +91,7 @@ jobs:
deploy: deploy:
needs: [ build-bot, build-web ] needs: [ build-bot, build-web ]
runs-on: [ dobby.sh-edraft.de, ubuntu-latest ] runs-on: [ dobby ]
container: git.sh-edraft.de/sh-edraft.de/act-runner:latest container: git.sh-edraft.de/sh-edraft.de/act-runner:latest
steps: steps:
- name: Clone Repository - name: Clone Repository

View File

@ -14,6 +14,7 @@
"config": "src/modules/config/config.json", "config": "src/modules/config/config.json",
"database": "src/modules/database/database.json", "database": "src/modules/database/database.json",
"level": "src/modules/level/level.json", "level": "src/modules/level/level.json",
"realms": "src/modules/realms/realms.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", "short-role-name": "src/modules/short_role_name/short-role-name.json",
"special-offers": "src/modules/special_offers/special-offers.json", "special-offers": "src/modules/special_offers/special-offers.json",

@ -1 +1 @@
Subproject commit fbcd9226c4d199529fdbce5169b38b1b23074adb Subproject commit c26ab4be084d0f51a161cf503ca2153172b1c2a8

View File

@ -11,16 +11,16 @@ Discord bot for customers of sh-edraft.de
""" """
__title__ = "bot" __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.2.8" __version__ = '1.2.9'
from collections import namedtuple from collections import namedtuple
# imports: # imports:
VersionInfo = namedtuple("VersionInfo", "major minor micro") VersionInfo = namedtuple('VersionInfo', 'major minor micro')
version_info = VersionInfo(major="1", minor="2", micro="8") version_info = VersionInfo(major='1', minor='2', micro='9')

View File

@ -4,7 +4,7 @@
"Version": { "Version": {
"Major": "1", "Major": "1",
"Minor": "2", "Minor": "2",
"Micro": "8" "Micro": "9"
}, },
"Author": "Sven Heidemann", "Author": "Sven Heidemann",
"AuthorEmail": "sven.heidemann@sh-edraft.de", "AuthorEmail": "sven.heidemann@sh-edraft.de",
@ -71,6 +71,7 @@
"../modules/config/config.json", "../modules/config/config.json",
"../modules/database/database.json", "../modules/database/database.json",
"../modules/level/level.json", "../modules/level/level.json",
"../modules/realms/realms.json",
"../modules/short_role_name/short-role-name.json", "../modules/short_role_name/short-role-name.json",
"../modules/special_offers/special-offers.json", "../modules/special_offers/special-offers.json",
"../modules/technician/technician.json" "../modules/technician/technician.json"

@ -1 +1 @@
Subproject commit eeebd13f80c6ceecc922ede5771e55212a884019 Subproject commit 40df176141b233f73a9f702b1e8a598ed305dce1

View File

@ -11,16 +11,16 @@ Discord bot for customers of sh-edraft.de
""" """
__title__ = "bot.extension" __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.2.8" __version__ = '1.2.9'
from collections import namedtuple from collections import namedtuple
# imports: # imports:
VersionInfo = namedtuple("VersionInfo", "major minor micro") VersionInfo = namedtuple('VersionInfo', 'major minor micro')
version_info = VersionInfo(major="1", minor="2", micro="8") version_info = VersionInfo(major='1', minor='2', micro='9')

View File

@ -12,6 +12,7 @@ from modules.boot_log.boot_log_module import BootLogModule
from modules.config.config_module import ConfigModule 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.realms.reams_module import RealmsModule
from modules.short_role_name.short_role_name_module import ShortRoleNameModule from modules.short_role_name.short_role_name_module import ShortRoleNameModule
from modules.special_offers.special_offers_module import SteamSpecialOffersModule from modules.special_offers.special_offers_module import SteamSpecialOffersModule
from modules.technician.technician_module import TechnicianModule from modules.technician.technician_module import TechnicianModule
@ -37,6 +38,7 @@ class ModuleList:
AchievementsModule, AchievementsModule,
ShortRoleNameModule, ShortRoleNameModule,
SteamSpecialOffersModule, SteamSpecialOffersModule,
RealmsModule,
# has to be last! # has to be last!
BootLogModule, BootLogModule,
CoreExtensionModule, CoreExtensionModule,

View File

@ -95,6 +95,56 @@
} }
}, },
"modules": { "modules": {
"realm": {
"list": {
"title": "Level:",
"description": "Konfigurierte Level:",
"realm_names": "Realm-Namen",
"error": {
"nothing_found": "Keine Einträge gefunden."
}
},
"add": {
"error": {
"role_exists": "Die Rolle {} existiert bereits.",
"category_exists": "Die Kategorie {} existiert bereits.",
"realm_exists": "Das Realm {} existiert bereits.",
"realm_create": "Fehler beim Erstellen des Realms {}."
},
"success": "Das Realm {} wurde erfolgreich erstellt."
},
"edit": {
"error": {
"realm_not_found": "Das Realm {} wurde nicht gefunden."
},
"success": "Das Realm {} wurde erfolgreich in {} umbenannt."
},
"error": {
"not_moderator": "Du bist kein Moderator des Realms {}."
},
"delete": {
"error": {
"realm_not_found": "Das Realm {} wurde nicht gefunden."
},
"success": "Das Realm {} wurde erfolgreich gelöscht."
},
"member": {
"add": {
"success": "{} wurde erfolgreich zum Realm {} hinzugefügt."
},
"remove": {
"success": "{} wurde erfolgreich aus dem Realm {} entfernt."
}
},
"moderator": {
"add": {
"success": "{} wurde erfolgreich zum Moderator des Realms {} hinzugefügt."
},
"remove": {
"success": "{} wurde erfolgreich als Moderator des Realms {} entfernt."
}
}
},
"special_offers": { "special_offers": {
"price": "Preis", "price": "Preis",
"discount": "Rabatt", "discount": "Rabatt",

View File

@ -11,16 +11,16 @@ Discord bot for customers of sh-edraft.de
""" """
__title__ = "bot_api" __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.2.8" __version__ = '1.2.9'
from collections import namedtuple from collections import namedtuple
# imports: # imports:
VersionInfo = namedtuple("VersionInfo", "major minor micro") VersionInfo = namedtuple('VersionInfo', 'major minor micro')
version_info = VersionInfo(major="1", minor="2", micro="8") version_info = VersionInfo(major='1', minor='2', micro='9')

View File

@ -11,16 +11,16 @@ Discord bot for customers of sh-edraft.de
""" """
__title__ = "bot_api.abc" __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.2.8" __version__ = '1.2.9'
from collections import namedtuple from collections import namedtuple
# imports: # imports:
VersionInfo = namedtuple("VersionInfo", "major minor micro") VersionInfo = namedtuple('VersionInfo', 'major minor micro')
version_info = VersionInfo(major="1", minor="2", micro="8") version_info = VersionInfo(major='1', minor='2', micro='9')

View File

@ -4,7 +4,7 @@
"Version": { "Version": {
"Major": "1", "Major": "1",
"Minor": "2", "Minor": "2",
"Micro": "8" "Micro": "9"
}, },
"Author": "", "Author": "",
"AuthorEmail": "", "AuthorEmail": "",

View File

@ -11,16 +11,16 @@ Discord bot for customers of sh-edraft.de
""" """
__title__ = "bot_api.configuration" __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.2.8" __version__ = '1.2.9'
from collections import namedtuple from collections import namedtuple
# imports # imports
VersionInfo = namedtuple("VersionInfo", "major minor micro") VersionInfo = namedtuple('VersionInfo', 'major minor micro')
version_info = VersionInfo(major="1", minor="2", micro="8") version_info = VersionInfo(major='1', minor='2', micro='9')

View File

@ -11,16 +11,16 @@ Discord bot for customers of sh-edraft.de
""" """
__title__ = "bot_api.controller" __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.2.8" __version__ = '1.2.9'
from collections import namedtuple from collections import namedtuple
# imports: # imports:
VersionInfo = namedtuple("VersionInfo", "major minor micro") VersionInfo = namedtuple('VersionInfo', 'major minor micro')
version_info = VersionInfo(major="1", minor="2", micro="8") version_info = VersionInfo(major='1', minor='2', micro='9')

View File

@ -11,16 +11,16 @@ Discord bot for customers of sh-edraft.de
""" """
__title__ = "bot_api.event" __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.2.8" __version__ = '1.2.9'
from collections import namedtuple from collections import namedtuple
# imports: # imports:
VersionInfo = namedtuple("VersionInfo", "major minor micro") VersionInfo = namedtuple('VersionInfo', 'major minor micro')
version_info = VersionInfo(major="1", minor="2", micro="8") version_info = VersionInfo(major='1', minor='2', micro='9')

View File

@ -11,16 +11,16 @@ Discord bot for customers of sh-edraft.de
""" """
__title__ = "bot_api.filter" __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.2.8" __version__ = '1.2.9'
from collections import namedtuple from collections import namedtuple
# imports: # imports:
VersionInfo = namedtuple("VersionInfo", "major minor micro") VersionInfo = namedtuple('VersionInfo', 'major minor micro')
version_info = VersionInfo(major="1", minor="2", micro="8") version_info = VersionInfo(major='1', minor='2', micro='9')

View File

@ -11,16 +11,16 @@ Discord bot for customers of sh-edraft.de
""" """
__title__ = "bot_api.filter.discord" __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.2.8" __version__ = '1.2.9'
from collections import namedtuple from collections import namedtuple
# imports: # imports:
VersionInfo = namedtuple("VersionInfo", "major minor micro") VersionInfo = namedtuple('VersionInfo', 'major minor micro')
version_info = VersionInfo(major="1", minor="2", micro="8") version_info = VersionInfo(major='1', minor='2', micro='9')

View File

@ -11,16 +11,16 @@ Discord bot for customers of sh-edraft.de
""" """
__title__ = "bot_api.logging" __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.2.8" __version__ = '1.2.9'
from collections import namedtuple from collections import namedtuple
# imports: # imports:
VersionInfo = namedtuple("VersionInfo", "major minor micro") VersionInfo = namedtuple('VersionInfo', 'major minor micro')
version_info = VersionInfo(major="1", minor="2", micro="8") version_info = VersionInfo(major='1', minor='2', micro='9')

View File

@ -11,16 +11,16 @@ Discord bot for customers of sh-edraft.de
""" """
__title__ = "bot_api.model" __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.2.8" __version__ = '1.2.9'
from collections import namedtuple from collections import namedtuple
# imports: # imports:
VersionInfo = namedtuple("VersionInfo", "major minor micro") VersionInfo = namedtuple('VersionInfo', 'major minor micro')
version_info = VersionInfo(major="1", minor="2", micro="8") version_info = VersionInfo(major='1', minor='2', micro='9')

View File

@ -11,16 +11,16 @@ Discord bot for customers of sh-edraft.de
""" """
__title__ = "bot_api.model.discord" __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.2.8" __version__ = '1.2.9'
from collections import namedtuple from collections import namedtuple
# imports: # imports:
VersionInfo = namedtuple("VersionInfo", "major minor micro") VersionInfo = namedtuple('VersionInfo', 'major minor micro')
version_info = VersionInfo(major="1", minor="2", micro="8") version_info = VersionInfo(major='1', minor='2', micro='9')

View File

@ -11,16 +11,16 @@ Discord bot for customers of sh-edraft.de
""" """
__title__ = "bot_api.route" __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.2.8" __version__ = '1.2.9'
from collections import namedtuple from collections import namedtuple
# imports: # imports:
VersionInfo = namedtuple("VersionInfo", "major minor micro") VersionInfo = namedtuple('VersionInfo', 'major minor micro')
version_info = VersionInfo(major="1", minor="2", micro="8") version_info = VersionInfo(major='1', minor='2', micro='9')

View File

@ -11,16 +11,16 @@ Discord bot for customers of sh-edraft.de
""" """
__title__ = "bot_api.service" __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.2.8" __version__ = '1.2.9'
from collections import namedtuple from collections import namedtuple
# imports # imports
VersionInfo = namedtuple("VersionInfo", "major minor micro") VersionInfo = namedtuple('VersionInfo', 'major minor micro')
version_info = VersionInfo(major="1", minor="2", micro="8") version_info = VersionInfo(major='1', minor='2', micro='9')

View File

@ -11,16 +11,16 @@ Discord bot for customers of sh-edraft.de
""" """
__title__ = "bot_api.transformer" __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.2.8" __version__ = '1.2.9'
from collections import namedtuple from collections import namedtuple
# imports: # imports:
VersionInfo = namedtuple("VersionInfo", "major minor micro") VersionInfo = namedtuple('VersionInfo', 'major minor micro')
version_info = VersionInfo(major="1", minor="2", micro="8") version_info = VersionInfo(major='1', minor='2', micro='9')

View File

@ -11,16 +11,16 @@ Discord bot for customers of sh-edraft.de
""" """
__title__ = "bot_core" __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.2.8" __version__ = '1.2.9'
from collections import namedtuple from collections import namedtuple
# imports # imports
VersionInfo = namedtuple("VersionInfo", "major minor micro") VersionInfo = namedtuple('VersionInfo', 'major minor micro')
version_info = VersionInfo(major="1", minor="2", micro="8") version_info = VersionInfo(major='1', minor='2', micro='9')

View File

@ -11,16 +11,16 @@ Discord bot for customers of sh-edraft.de
""" """
__title__ = "bot_core.abc" __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.2.8" __version__ = '1.2.9'
from collections import namedtuple from collections import namedtuple
# imports: # imports:
VersionInfo = namedtuple("VersionInfo", "major minor micro") VersionInfo = namedtuple('VersionInfo', 'major minor micro')
version_info = VersionInfo(major="1", minor="2", micro="8") version_info = VersionInfo(major='1', minor='2', micro='9')

View File

@ -4,7 +4,7 @@
"Version": { "Version": {
"Major": "1", "Major": "1",
"Minor": "2", "Minor": "2",
"Micro": "8" "Micro": "9"
}, },
"Author": "Sven Heidemann", "Author": "Sven Heidemann",
"AuthorEmail": "sven.heidemann@sh-edraft.de", "AuthorEmail": "sven.heidemann@sh-edraft.de",

View File

@ -11,16 +11,16 @@ Discord bot for customers of sh-edraft.de
""" """
__title__ = "bot_core.configuration" __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.2.8" __version__ = '1.2.9'
from collections import namedtuple from collections import namedtuple
# imports: # imports:
VersionInfo = namedtuple("VersionInfo", "major minor micro") VersionInfo = namedtuple('VersionInfo', 'major minor micro')
version_info = VersionInfo(major="1", minor="2", micro="8") version_info = VersionInfo(major='1', minor='2', micro='9')

View File

@ -17,6 +17,7 @@ class FeatureFlagsEnum(Enum):
moderator_module = "ModeratorModule" moderator_module = "ModeratorModule"
short_role_name_module = "ShortRoleNameModule" short_role_name_module = "ShortRoleNameModule"
steam_special_offers_module = "SteamSpecialOffersModule" steam_special_offers_module = "SteamSpecialOffersModule"
realm_module = "RealmModule"
# features # features
api_only = "ApiOnly" api_only = "ApiOnly"
presence = "Presence" presence = "Presence"

View File

@ -19,6 +19,7 @@ class FeatureFlagsSettings(ConfigurationModelABC):
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 FeatureFlagsEnum.short_role_name_module.value: True, # 28.09.2023 #378
FeatureFlagsEnum.steam_special_offers_module.value: True, # 11.10.2023 #188 FeatureFlagsEnum.steam_special_offers_module.value: True, # 11.10.2023 #188
FeatureFlagsEnum.realm_module.value: True, # 07.01.2025 #481
# 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

View File

@ -11,16 +11,16 @@ Discord bot for customers of sh-edraft.de
""" """
__title__ = "bot_core.core_extension" __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.2.8" __version__ = '1.2.9'
from collections import namedtuple from collections import namedtuple
# imports: # imports:
VersionInfo = namedtuple("VersionInfo", "major minor micro") VersionInfo = namedtuple('VersionInfo', 'major minor micro')
version_info = VersionInfo(major="1", minor="2", micro="8") version_info = VersionInfo(major='1', minor='2', micro='9')

View File

@ -15,7 +15,7 @@ from bot_core.service.client_utils_service import ClientUtilsService
from bot_core.service.config_service import ConfigService from bot_core.service.config_service import ConfigService
from bot_core.service.data_integrity_service import DataIntegrityService from bot_core.service.data_integrity_service import DataIntegrityService
from bot_core.service.message_service import MessageService from bot_core.service.message_service import MessageService
from bot_core.service.permission_service import PermissionService from bot_core.service.permission_service_with_cache import PermissionServiceWithCache
class CoreModule(ModuleABC): class CoreModule(ModuleABC):
@ -30,7 +30,7 @@ class CoreModule(ModuleABC):
services.add_transient(MessageServiceABC, MessageService) services.add_transient(MessageServiceABC, MessageService)
services.add_transient(ClientUtilsABC, ClientUtilsService) services.add_transient(ClientUtilsABC, ClientUtilsService)
services.add_transient(DataIntegrityService) services.add_transient(DataIntegrityService)
services.add_singleton(PermissionServiceABC, PermissionService) services.add_singleton(PermissionServiceABC, PermissionServiceWithCache)
# pipes # pipes
services.add_transient(DateTimeOffsetPipe) services.add_transient(DateTimeOffsetPipe)

View File

@ -11,16 +11,16 @@ Discord bot for customers of sh-edraft.de
""" """
__title__ = "bot_core.events" __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.2.8" __version__ = '1.2.9'
from collections import namedtuple from collections import namedtuple
# imports: # imports:
VersionInfo = namedtuple("VersionInfo", "major minor micro") VersionInfo = namedtuple('VersionInfo', 'major minor micro')
version_info = VersionInfo(major="1", minor="2", micro="8") version_info = VersionInfo(major='1', minor='2', micro='9')

View File

@ -11,16 +11,16 @@ Discord bot for customers of sh-edraft.de
""" """
__title__ = "bot_core.exception" __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.2.8" __version__ = '1.2.9'
from collections import namedtuple from collections import namedtuple
# imports: # imports:
VersionInfo = namedtuple("VersionInfo", "major minor micro") VersionInfo = namedtuple('VersionInfo', 'major minor micro')
version_info = VersionInfo(major="1", minor="2", micro="8") version_info = VersionInfo(major='1', minor='2', micro='9')

View File

@ -11,16 +11,16 @@ Discord bot for customers of sh-edraft.de
""" """
__title__ = "bot_core.helper" __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.2.8" __version__ = '1.2.9'
from collections import namedtuple from collections import namedtuple
# imports: # imports:
VersionInfo = namedtuple("VersionInfo", "major minor micro") VersionInfo = namedtuple('VersionInfo', 'major minor micro')
version_info = VersionInfo(major="1", minor="2", micro="8") version_info = VersionInfo(major='1', minor='2', micro='9')

View File

@ -11,16 +11,16 @@ Discord bot for customers of sh-edraft.de
""" """
__title__ = "bot_core.logging" __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.2.8" __version__ = '1.2.9'
from collections import namedtuple from collections import namedtuple
# imports # imports
VersionInfo = namedtuple("VersionInfo", "major minor micro") VersionInfo = namedtuple('VersionInfo', 'major minor micro')
version_info = VersionInfo(major="1", minor="2", micro="8") version_info = VersionInfo(major='1', minor='2', micro='9')

View File

@ -11,16 +11,16 @@ Discord bot for customers of sh-edraft.de
""" """
__title__ = "bot_core.pipes" __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.2.8" __version__ = '1.2.9'
from collections import namedtuple from collections import namedtuple
# imports # imports
VersionInfo = namedtuple("VersionInfo", "major minor micro") VersionInfo = namedtuple('VersionInfo', 'major minor micro')
version_info = VersionInfo(major="1", minor="2", micro="8") version_info = VersionInfo(major='1', minor='2', micro='9')

View File

@ -11,16 +11,16 @@ Discord bot for customers of sh-edraft.de
""" """
__title__ = "bot_core.service" __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.2.8" __version__ = '1.2.9'
from collections import namedtuple from collections import namedtuple
# imports: # imports:
VersionInfo = namedtuple("VersionInfo", "major minor micro") VersionInfo = namedtuple('VersionInfo', 'major minor micro')
version_info = VersionInfo(major="1", minor="2", micro="8") version_info = VersionInfo(major='1', minor='2', micro='9')

View File

@ -27,6 +27,7 @@ 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.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
from modules.realms.realm_utils import RealmUtils
class DataIntegrityService: class DataIntegrityService:
@ -46,6 +47,7 @@ class DataIntegrityService:
achievement_service: AchievementService, achievement_service: AchievementService,
client_utils: ClientUtilsABC, client_utils: ClientUtilsABC,
dtp: DateTimeOffsetPipe, dtp: DateTimeOffsetPipe,
ream_utils: RealmUtils,
): ):
self._config = config self._config = config
@ -62,6 +64,7 @@ class DataIntegrityService:
self._achievements = achievement_service self._achievements = achievement_service
self._client_utils = client_utils self._client_utils = client_utils
self._dtp = dtp self._dtp = dtp
self._realm_utils = ream_utils
self._is_for_shutdown = False self._is_for_shutdown = False
@ -96,6 +99,9 @@ class DataIntegrityService:
self._logger.debug(__name__, f"Start check for user got achievements: {g.id}@{m.id}") self._logger.debug(__name__, f"Start check for user got achievements: {g.id}@{m.id}")
await self._check_for_user_achievements(u) await self._check_for_user_achievements(u)
self._logger.debug(__name__, f"Start check for user got achievements: {g.id}@{m.id}")
await self._realm_utils.check_integrity(s, g)
for m in [m for m in g.members if m.bot]: for m in [m for m in g.members if m.bot]:
u = self._users.find_user_by_discord_id_and_server_id(m.id, s.id) u = self._users.find_user_by_discord_id_and_server_id(m.id, s.id)
if u is None: if u is None:

View File

@ -12,7 +12,7 @@ from bot_data.abc.technician_config_repository_abc import TechnicianConfigReposi
from bot_data.model.team_member_type_enum import TeamMemberTypeEnum from bot_data.model.team_member_type_enum import TeamMemberTypeEnum
class PermissionService(PermissionServiceABC): class PermissionServiceWithCache(PermissionServiceABC):
def __init__( def __init__(
self, self,
logger: LoggerABC, logger: LoggerABC,

View File

@ -11,16 +11,16 @@ Discord bot for customers of sh-edraft.de
""" """
__title__ = "bot_data" __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.2.8" __version__ = '1.2.9'
from collections import namedtuple from collections import namedtuple
# imports # imports
VersionInfo = namedtuple("VersionInfo", "major minor micro") VersionInfo = namedtuple('VersionInfo', 'major minor micro')
version_info = VersionInfo(major="1", minor="2", micro="8") version_info = VersionInfo(major='1', minor='2', micro='9')

View File

@ -11,16 +11,16 @@ Discord bot for customers of sh-edraft.de
""" """
__title__ = "bot_data.abc" __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.2.8" __version__ = '1.2.9'
from collections import namedtuple from collections import namedtuple
# imports # imports
VersionInfo = namedtuple("VersionInfo", "major minor micro") VersionInfo = namedtuple('VersionInfo', 'major minor micro')
version_info = VersionInfo(major="1", minor="2", micro="8") version_info = VersionInfo(major='1', minor='2', micro='9')

View File

@ -0,0 +1,69 @@
from abc import ABC, abstractmethod
from typing import Optional
from cpl_query.extension import List
from bot_data.model.realm import Realm
from bot_data.model.realm_moderator import RealmModerator
class RealmRepositoryABC(ABC):
@abstractmethod
def __init__(self):
pass
@abstractmethod
def get_all(self) -> List[Realm]:
pass
@abstractmethod
def get_realm_by_id(self, id: int) -> Realm:
pass
@abstractmethod
def find_realm_by_id(self, id: int) -> Optional[Realm]:
pass
@abstractmethod
def find_realm_by_name(self, name: str) -> Optional[Realm]:
pass
@abstractmethod
def get_realms_by_server_id(self, id: int) -> List[Realm]:
pass
@abstractmethod
def add_realm(self, realm: Realm):
pass
@abstractmethod
def update_realm(self, realm: Realm):
pass
@abstractmethod
def delete_realm(self, realm: Realm):
pass
@abstractmethod
def get_realm_moderators(self) -> List[RealmModerator]:
pass
@abstractmethod
def get_realm_moderator_by_id(self, id: int) -> RealmModerator:
pass
@abstractmethod
def get_realm_moderators_by_realm_id(self, id: int) -> List[RealmModerator]:
pass
@abstractmethod
def add_realm_moderator(self, realm: RealmModerator):
pass
@abstractmethod
def update_realm_moderator(self, realm: RealmModerator):
pass
@abstractmethod
def delete_realm_moderator(self, realm: RealmModerator):
pass

View File

@ -4,7 +4,7 @@
"Version": { "Version": {
"Major": "1", "Major": "1",
"Minor": "2", "Minor": "2",
"Micro": "8" "Micro": "9"
}, },
"Author": "Sven Heidemann", "Author": "Sven Heidemann",
"AuthorEmail": "sven.heidemann@sh-edraft.de", "AuthorEmail": "sven.heidemann@sh-edraft.de",

View File

@ -14,6 +14,7 @@ from bot_data.abc.data_seeder_abc import DataSeederABC
from bot_data.abc.game_server_repository_abc import GameServerRepositoryABC 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.realm_repository_abc import RealmRepositoryABC
from bot_data.abc.scheduled_event_repository_abc import ScheduledEventRepositoryABC from bot_data.abc.scheduled_event_repository_abc import ScheduledEventRepositoryABC
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
@ -46,6 +47,7 @@ from bot_data.service.client_repository_service import ClientRepositoryService
from bot_data.service.game_server_repository_service import GameServerRepositoryService from bot_data.service.game_server_repository_service import GameServerRepositoryService
from bot_data.service.known_user_repository_service import KnownUserRepositoryService from bot_data.service.known_user_repository_service import KnownUserRepositoryService
from bot_data.service.level_repository_service import LevelRepositoryService from bot_data.service.level_repository_service import LevelRepositoryService
from bot_data.service.realm_repository_service import RealmRepositoryService
from bot_data.service.scheduled_event_repository_service import ScheduledEventRepositoryService from bot_data.service.scheduled_event_repository_service import ScheduledEventRepositoryService
from bot_data.service.seeder_service import SeederService from bot_data.service.seeder_service import SeederService
from bot_data.service.server_config_repository_service import ( from bot_data.service.server_config_repository_service import (
@ -118,6 +120,7 @@ class DataModule(ModuleABC):
services.add_transient(ShortRoleNameRepositoryABC, ShortRoleNameRepositoryService) services.add_transient(ShortRoleNameRepositoryABC, ShortRoleNameRepositoryService)
services.add_transient(SteamSpecialOfferRepositoryABC, SteamSpecialOfferRepositoryService) services.add_transient(SteamSpecialOfferRepositoryABC, SteamSpecialOfferRepositoryService)
services.add_transient(ScheduledEventRepositoryABC, ScheduledEventRepositoryService) services.add_transient(ScheduledEventRepositoryABC, ScheduledEventRepositoryService)
services.add_transient(RealmRepositoryABC, RealmRepositoryService)
services.add_transient(SeederService) services.add_transient(SeederService)
services.add_transient(DataSeederABC, TechnicianConfigSeeder) services.add_transient(DataSeederABC, TechnicianConfigSeeder)

View File

@ -11,16 +11,16 @@ Discord bot for customers of sh-edraft.de
""" """
__title__ = "bot_data.model" __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.2.8" __version__ = '1.2.9'
from collections import namedtuple from collections import namedtuple
# imports # imports
VersionInfo = namedtuple("VersionInfo", "major minor micro") VersionInfo = namedtuple('VersionInfo', 'major minor micro')
version_info = VersionInfo(major="1", minor="2", micro="8") version_info = VersionInfo(major='1', minor='2', micro='9')

View File

@ -0,0 +1,120 @@
from datetime import datetime
from typing import Optional
from cpl_core.database import TableABC
from bot_data.model.server import Server
class Realm(TableABC):
def __init__(
self,
name: str,
role_id: int,
server: Optional[Server],
created_at: datetime = None,
modified_at: datetime = None,
id=0,
):
self._id = id
self._name = name
self._role_id = role_id
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 name(self) -> str:
return self._name
@name.setter
def name(self, value: str):
self._name = value
@property
def role_id(self) -> int:
return self._role_id
@role_id.setter
def role_id(self, value: int):
self._role_id = value
@property
def server(self) -> Server:
return self._server
@staticmethod
def get_select_all_string() -> str:
return str(
f"""
SELECT * FROM `Realms`;
"""
)
@staticmethod
def get_select_by_id_string(id: int) -> str:
return str(
f"""
SELECT * FROM `Realms`
WHERE `RealmId` = {id};
"""
)
@staticmethod
def get_select_by_server_id_string(id: int) -> str:
return str(
f"""
SELECT * FROM `Realms`
WHERE `ServerId` = {id};
"""
)
@staticmethod
def get_select_by_name_string(name: str) -> str:
return str(
f"""
SELECT * FROM `Realms`
WHERE `Name` = '{name}';
"""
)
@property
def insert_string(self) -> str:
return str(
f"""
INSERT INTO `Realms` (
`ServerId`, `Name`, `RoleId`
) VALUES (
{self._server.id},
'{self._name}',
{self._role_id}
);
"""
)
@property
def udpate_string(self) -> str:
return str(
f"""
UPDATE `Realms`
SET `ServerId` = {self._server.id},
`Name` = '{self._name}',
`RoleId` = {self._role_id}
WHERE `RealmId` = {self._id};
"""
)
@property
def delete_string(self) -> str:
return str(
f"""
DELETE FROM `Realms`
WHERE `RealmId` = {self._id};
"""
)

View File

@ -0,0 +1,43 @@
from typing import Optional
from bot_data.abc.history_table_abc import HistoryTableABC
from bot_data.model.server import Server
class Realm(HistoryTableABC):
def __init__(
self,
server: Optional[Server],
name: str,
role_id: int,
deleted: bool,
date_from: str,
date_to: str,
id=0,
):
HistoryTableABC.__init__(self)
self._id = id
self._server = server
self._name = name
self._role_id = role_id
self._deleted = deleted
self._date_from = date_from
self._date_to = date_to
@property
def id(self) -> int:
return self._id
@property
def server(self) -> Server:
return self._server
@property
def name(self) -> str:
return self._name
@property
def role_id(self) -> int:
return self._role_id

View File

@ -0,0 +1,106 @@
from datetime import datetime
from cpl_core.database import TableABC
from bot_data.model.realm import Realm
from bot_data.model.user import User
class RealmModerator(TableABC):
def __init__(
self,
realm: Realm,
user: User,
created_at: datetime = None,
modified_at: datetime = None,
id=0,
):
self._join_id = id
self._realm = realm
self._user = user
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._join_id
@property
def realm(self) -> Realm:
return self._realm
@property
def user(self) -> User:
return self._user
@staticmethod
def get_select_all_string() -> str:
return str(
f"""
SELECT * FROM `RealmModerators`;
"""
)
@staticmethod
def get_select_by_id_string(id: int) -> str:
return str(
f"""
SELECT * FROM `RealmModerators`
WHERE `Id` = {id};
"""
)
@staticmethod
def get_select_by_realm_id_string(id: int) -> str:
return str(
f"""
SELECT * FROM `RealmModerators`
WHERE `RealmId` = {id};
"""
)
@staticmethod
def get_select_by_user_id_string(id: int) -> str:
return str(
f"""
SELECT * FROM `RealmModerators`
WHERE `UserId` = {id};
"""
)
@property
def insert_string(self) -> str:
return str(
f"""
INSERT INTO `RealmModerators` (
`UserId`, `RealmId`
) VALUES (
{self._user.id},
{self._realm.id}
);
"""
)
@property
def udpate_string(self) -> str:
return str(f"""""")
@property
def delete_string(self) -> str:
return str(
f"""
DELETE FROM `RealmModerators`
WHERE `Id` = {self._join_id};
"""
)
@staticmethod
def delete_by_user_id_string(id: int) -> str:
return str(
f"""
DELETE FROM `RealmModerators`
WHERE `UserId` = {id}
"""
)

View File

@ -0,0 +1,36 @@
from bot_data.abc.history_table_abc import HistoryTableABC
from bot_data.model.realm import Realm
from bot_data.model.user import User
class RealmModerator(HistoryTableABC):
def __init__(
self,
realm: Realm,
user: User,
deleted: bool,
date_from: str,
date_to: str,
id=0,
):
HistoryTableABC.__init__(self)
self._join_id = id
self._realm = realm
self._user = user
self._deleted = deleted
self._date_from = date_from
self._date_to = date_to
@property
def id(self) -> int:
return self._join_id
@property
def realm(self) -> Realm:
return self._realm
@property
def user(self) -> User:
return self._user

View File

@ -0,0 +1,4 @@
DROP TABLE IF EXISTS `Realms`;
DROP TABLE IF EXISTS `RealmsHistory`;
DROP TABLE IF EXISTS `RealmModerators`;
DROP TABLE IF EXISTS `RealmModeratorsHistory`;

View File

@ -0,0 +1,97 @@
CREATE TABLE IF NOT EXISTS `Realms`
(
`RealmId` BIGINT NOT NULL AUTO_INCREMENT,
`Name` VARCHAR(255) NOT NULL,
`RoleId` BIGINT 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 (`RealmId`),
FOREIGN KEY (`ServerId`) REFERENCES `Servers` (`ServerId`)
);
CREATE TABLE IF NOT EXISTS `RealmsHistory`
(
`RealmId` BIGINT(20) NOT NULL,
`Name` VARCHAR(255) NOT NULL,
`RoleId` BIGINT 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_RealmsUpdate`;
CREATE TRIGGER `TR_RealmsUpdate`
AFTER UPDATE
ON `Realms`
FOR EACH ROW
BEGIN
INSERT INTO `RealmsHistory` (`RealmId`, `Name`, `RoleId`, `ServerId`, `DateFrom`, `DateTo`)
VALUES (OLD.RealmId, OLD.Name, OLD.RoleId, OLD.ServerId, OLD.LastModifiedAt, CURRENT_TIMESTAMP(6));
END;
DROP TRIGGER IF EXISTS `TR_RealmsDelete`;
CREATE TRIGGER `TR_RealmsDelete`
AFTER DELETE
ON `Realms`
FOR EACH ROW
BEGIN
INSERT INTO `RealmsHistory` (`RealmId`, `Name`, `RoleId`, `ServerId`, `Deleted`, `DateFrom`, `DateTo`)
VALUES (OLD.RealmId, OLD.Name, OLD.RoleId, OLD.ServerId, TRUE, OLD.LastModifiedAt, CURRENT_TIMESTAMP(6));
END;
-- Realm moderators
CREATE TABLE IF NOT EXISTS `RealmModerators`
(
`Id` BIGINT NOT NULL AUTO_INCREMENT,
`RealmId` BIGINT NOT NULL,
`UserId` BIGINT 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 (`RealmId`) REFERENCES `Realms` (`RealmId`),
FOREIGN KEY (`UserId`) REFERENCES `Users` (`UserId`),
FOREIGN KEY (`ServerId`) REFERENCES `Servers` (`ServerId`)
);
CREATE TABLE IF NOT EXISTS `RealmModeratorsHistory`
(
`Id` BIGINT(20) NOT NULL,
`RealmId` BIGINT NOT NULL,
`UserId` BIGINT 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_RealmModeratorsUpdate`;
CREATE TRIGGER `TR_RealmModeratorsUpdate`
AFTER UPDATE
ON `RealmModerators`
FOR EACH ROW
BEGIN
INSERT INTO `RealmModeratorsHistory` (`Id`, `RealmId`, `UserId`, `ServerId`, `DateFrom`, `DateTo`)
VALUES (OLD.Id, OLD.RealmId, OLD.UserId, OLD.ServerId, OLD.LastModifiedAt, CURRENT_TIMESTAMP(6));
END;
DROP TRIGGER IF EXISTS `TR_RealmModeratorsDelete`;
CREATE TRIGGER `TR_RealmModeratorsDelete`
AFTER DELETE
ON `RealmModerators`
FOR EACH ROW
BEGIN
INSERT INTO `RealmModeratorsHistory` (`Id`, `RealmId`, `UserId`, `ServerId`, `Deleted`, `DateFrom`, `DateTo`)
VALUES (OLD.Id, OLD.RealmId, OLD.UserId, OLD.ServerId, TRUE, OLD.LastModifiedAt, CURRENT_TIMESTAMP(6));
END;

View File

@ -11,16 +11,16 @@ Discord bot for customers of sh-edraft.de
""" """
__title__ = "bot_data.service" __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.2.8" __version__ = '1.2.9'
from collections import namedtuple from collections import namedtuple
# imports # imports
VersionInfo = namedtuple("VersionInfo", "major minor micro") VersionInfo = namedtuple('VersionInfo', 'major minor micro')
version_info = VersionInfo(major="1", minor="2", micro="8") version_info = VersionInfo(major='1', minor='2', micro='9')

View File

@ -0,0 +1,127 @@
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.realm_repository_abc import RealmRepositoryABC
from bot_data.abc.server_repository_abc import ServerRepositoryABC
from bot_data.abc.user_repository_abc import UserRepositoryABC
from bot_data.model.realm import Realm
from bot_data.model.realm_moderator import RealmModerator
class RealmRepositoryService(RealmRepositoryABC):
def __init__(
self,
logger: DatabaseLogger,
db_context: DatabaseContextABC,
servers: ServerRepositoryABC,
users: UserRepositoryABC,
):
self._logger = logger
self._context = db_context
self._servers = servers
self._users = users
RealmRepositoryABC.__init__(self)
def _from_result(self, result: tuple) -> Realm:
return Realm(
result[1],
result[2],
self._servers.get_server_by_id(result[3]),
result[4],
result[5],
id=result[0],
)
def get_all(self) -> List[Realm]:
self._logger.trace(__name__, f"Send SQL command: {Realm.get_select_all_string()}")
return List(
Realm, [self._from_result(result) for result in self._context.select(Realm.get_select_all_string())]
)
def get_realm_by_id(self, id: int) -> Realm:
self._logger.trace(__name__, f"Send SQL command: {Realm.get_select_by_id_string(id)}")
return self._from_result(self._context.select(Realm.get_select_by_id_string(id))[0])
def find_realm_by_id(self, id: int) -> Optional[Realm]:
self._logger.trace(__name__, f"Send SQL command: {Realm.get_select_by_id_string(id)}")
result = self._context.select(Realm.get_select_by_id_string(id))
if result is None or len(result) == 0:
return None
return self._from_result(result[0])
def find_realm_by_name(self, name: str) -> Optional[Realm]:
self._logger.trace(__name__, f"Send SQL command: {Realm.get_select_by_name_string(name)}")
result = self._context.select(Realm.get_select_by_name_string(name))
if result is None or len(result) == 0:
return None
return self._from_result(result[0])
def get_realms_by_server_id(self, id: int) -> List[Realm]:
self._logger.trace(__name__, f"Send SQL command: {Realm.get_select_by_server_id_string(id)}")
return List(
Realm,
[self._from_result(result) for result in self._context.select(Realm.get_select_by_server_id_string(id))],
)
def add_realm(self, realm: Realm):
self._logger.trace(__name__, f"Send SQL command: {realm.insert_string}")
self._context.cursor.execute(realm.insert_string)
def update_realm(self, realm: Realm):
self._logger.trace(__name__, f"Send SQL command: {realm.udpate_string}")
self._context.cursor.execute(realm.udpate_string)
def delete_realm(self, realm: Realm):
self._logger.trace(__name__, f"Send SQL command: {realm.delete_string}")
self._context.cursor.execute(realm.delete_string)
def _rule_from_result(self, result: tuple) -> RealmModerator:
return RealmModerator(
self.get_realm_by_id(result[1]),
self._users.get_user_by_id(result[2]),
result[4],
result[5],
id=result[0],
)
def get_realm_moderators(self) -> List[RealmModerator]:
self._logger.trace(__name__, f"Send SQL command: {RealmModerator.get_select_all_string()}")
return List(
RealmModerator,
[self._rule_from_result(result) for result in self._context.select(RealmModerator.get_select_all_string())],
)
def get_realm_moderator_by_id(self, id: int) -> RealmModerator:
self._logger.trace(__name__, f"Send SQL command: {RealmModerator.get_select_by_id_string(id)}")
return self._rule_from_result(self._context.select(RealmModerator.get_select_by_id_string(id))[0])
def get_realm_moderators_by_realm_id(self, id: int) -> List[RealmModerator]:
self._logger.trace(
__name__,
f"Send SQL command: {RealmModerator.get_select_by_realm_id_string(id)}",
)
return List(
RealmModerator,
[
self._rule_from_result(result)
for result in self._context.select(RealmModerator.get_select_by_realm_id_string(id))
],
)
def add_realm_moderator(self, realm_moderator: RealmModerator):
self._logger.trace(__name__, f"Send SQL command: {realm_moderator.insert_string}")
self._context.cursor.execute(realm_moderator.insert_string)
def update_realm_moderator(self, realm_moderator: RealmModerator):
self._logger.trace(__name__, f"Send SQL command: {realm_moderator.udpate_string}")
self._context.cursor.execute(realm_moderator.udpate_string)
def delete_realm_moderator(self, realm_moderator: RealmModerator):
self._logger.trace(__name__, f"Send SQL command: {realm_moderator.delete_string}")
self._context.cursor.execute(realm_moderator.delete_string)

View File

@ -11,16 +11,16 @@ Discord bot for customers of sh-edraft.de
""" """
__title__ = "bot_graphql" __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.2.8" __version__ = '1.2.9'
from collections import namedtuple from collections import namedtuple
# imports # imports
VersionInfo = namedtuple("VersionInfo", "major minor micro") VersionInfo = namedtuple('VersionInfo', 'major minor micro')
version_info = VersionInfo(major="1", minor="2", micro="8") version_info = VersionInfo(major='1', minor='2', micro='9')

View File

@ -11,16 +11,16 @@ Discord bot for customers of sh-edraft.de
""" """
__title__ = "bot_graphql.abc" __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.2.8" __version__ = '1.2.9'
from collections import namedtuple from collections import namedtuple
# imports: # imports:
VersionInfo = namedtuple("VersionInfo", "major minor micro") VersionInfo = namedtuple('VersionInfo', 'major minor micro')
version_info = VersionInfo(major="1", minor="2", micro="8") version_info = VersionInfo(major='1', minor='2', micro='9')

View File

@ -12,7 +12,7 @@ from bot_core.exception.service_exception import ServiceException
from bot_api.route.route import Route from bot_api.route.route import Route
from bot_core.configuration.feature_flags_enum import FeatureFlagsEnum from bot_core.configuration.feature_flags_enum import FeatureFlagsEnum
from bot_core.environment_variables import MAINTENANCE from bot_core.environment_variables import MAINTENANCE
from bot_core.service.permission_service import PermissionService from bot_core.service.permission_service_with_cache import PermissionServiceWithCache
from bot_data.model.achievement import Achievement from bot_data.model.achievement import Achievement
from bot_data.model.auth_role_enum import AuthRoleEnum from bot_data.model.auth_role_enum import AuthRoleEnum
from bot_data.model.auth_user import AuthUser from bot_data.model.auth_user import AuthUser
@ -82,7 +82,7 @@ class QueryABC(ObjectType):
return config return config
services = get_services() services = get_services()
permissions: PermissionService = services.get_service(PermissionService) permissions: PermissionServiceWithCache = services.get_service(PermissionServiceWithCache)
bot: DiscordBotServiceABC = services.get_service(DiscordBotServiceABC) bot: DiscordBotServiceABC = services.get_service(DiscordBotServiceABC)
config = get_config() config = get_config()
@ -269,7 +269,7 @@ class QueryABC(ObjectType):
def _can_user_mutate_data( def _can_user_mutate_data(
self, server: Server, permission: UserRoleEnum, services: ServiceProviderABC, config: ConfigurationABC self, server: Server, permission: UserRoleEnum, services: ServiceProviderABC, config: ConfigurationABC
): ):
permissions: PermissionService = services.get_service(PermissionService) permissions: PermissionServiceWithCache = services.get_service(PermissionServiceWithCache)
bot: DiscordBotServiceABC = services.get_service(DiscordBotServiceABC) bot: DiscordBotServiceABC = services.get_service(DiscordBotServiceABC)
auth_user = Route.get_user() auth_user = Route.get_user()

View File

@ -4,7 +4,7 @@
"Version": { "Version": {
"Major": "1", "Major": "1",
"Minor": "2", "Minor": "2",
"Micro": "8" "Micro": "9"
}, },
"Author": "Sven Heidemann", "Author": "Sven Heidemann",
"AuthorEmail": "sven.heidemann@sh-edraft.de", "AuthorEmail": "sven.heidemann@sh-edraft.de",

View File

@ -11,16 +11,16 @@ Discord bot for customers of sh-edraft.de
""" """
__title__ = "bot_graphql.filter" __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.2.8" __version__ = '1.2.9'
from collections import namedtuple from collections import namedtuple
# imports: # imports:
VersionInfo = namedtuple("VersionInfo", "major minor micro") VersionInfo = namedtuple('VersionInfo', 'major minor micro')
version_info = VersionInfo(major="1", minor="2", micro="8") version_info = VersionInfo(major='1', minor='2', micro='9')

View File

@ -11,16 +11,16 @@ Discord bot for customers of sh-edraft.de
""" """
__title__ = "bot_graphql.model" __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.2.8" __version__ = '1.2.9'
from collections import namedtuple from collections import namedtuple
# imports # imports
VersionInfo = namedtuple("VersionInfo", "major minor micro") VersionInfo = namedtuple('VersionInfo', 'major minor micro')
version_info = VersionInfo(major="1", minor="2", micro="8") version_info = VersionInfo(major='1', minor='2', micro='9')

View File

@ -11,16 +11,16 @@ Discord bot for customers of sh-edraft.de
""" """
__title__ = "bot_graphql.mutations" __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.2.8" __version__ = '1.2.9'
from collections import namedtuple from collections import namedtuple
# imports: # imports:
VersionInfo = namedtuple("VersionInfo", "major minor micro") VersionInfo = namedtuple('VersionInfo', 'major minor micro')
version_info = VersionInfo(major="1", minor="2", micro="8") version_info = VersionInfo(major='1', minor='2', micro='9')

View File

@ -6,7 +6,7 @@ from bot_data.abc.server_repository_abc import ServerRepositoryABC
from bot_data.model.achievement import Achievement from bot_data.model.achievement import Achievement
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 bot_core.service.permission_service import PermissionService from bot_core.service.permission_service_with_cache import PermissionServiceWithCache
class AchievementMutation(QueryABC): class AchievementMutation(QueryABC):
@ -16,7 +16,7 @@ class AchievementMutation(QueryABC):
achievements: AchievementRepositoryABC, achievements: AchievementRepositoryABC,
bot: DiscordBotServiceABC, bot: DiscordBotServiceABC,
db: DatabaseContextABC, db: DatabaseContextABC,
permissions: PermissionService, permissions: PermissionServiceWithCache,
): ):
QueryABC.__init__(self, "AchievementMutation") QueryABC.__init__(self, "AchievementMutation")

View File

@ -10,7 +10,7 @@ from bot_data.model.scheduled_event import ScheduledEvent
from bot_data.model.scheduled_event_interval_enum import ScheduledEventIntervalEnum from bot_data.model.scheduled_event_interval_enum import ScheduledEventIntervalEnum
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 bot_core.service.permission_service import PermissionService from bot_core.service.permission_service_with_cache import PermissionServiceWithCache
class ScheduledEventMutation(QueryABC): class ScheduledEventMutation(QueryABC):
@ -20,7 +20,7 @@ class ScheduledEventMutation(QueryABC):
scheduled_events: ScheduledEventRepositoryABC, scheduled_events: ScheduledEventRepositoryABC,
bot: DiscordBotServiceABC, bot: DiscordBotServiceABC,
db: DatabaseContextABC, db: DatabaseContextABC,
permissions: PermissionService, permissions: PermissionServiceWithCache,
): ):
QueryABC.__init__(self, "ScheduledEventMutation") QueryABC.__init__(self, "ScheduledEventMutation")

View File

@ -13,7 +13,7 @@ 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 bot_core.service.permission_service import PermissionService from bot_core.service.permission_service_with_cache import PermissionServiceWithCache
class ServerConfigMutation(QueryABC): class ServerConfigMutation(QueryABC):
@ -25,7 +25,7 @@ class ServerConfigMutation(QueryABC):
server_configs: ServerConfigRepositoryABC, server_configs: ServerConfigRepositoryABC,
db: DatabaseContextABC, db: DatabaseContextABC,
config_service: ConfigService, config_service: ConfigService,
permissions: PermissionService, permissions: PermissionServiceWithCache,
): ):
QueryABC.__init__(self, "ServerConfigMutation") QueryABC.__init__(self, "ServerConfigMutation")

View File

@ -6,7 +6,7 @@ from bot_data.abc.short_role_name_repository_abc import ShortRoleNameRepositoryA
from bot_data.model.short_role_name import ShortRoleName from bot_data.model.short_role_name import ShortRoleName
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 bot_core.service.permission_service import PermissionService from bot_core.service.permission_service_with_cache import PermissionServiceWithCache
from modules.short_role_name.service.short_role_name_service import ShortRoleNameService from modules.short_role_name.service.short_role_name_service import ShortRoleNameService
@ -17,7 +17,7 @@ class ShortRoleNameMutation(QueryABC):
short_role_names: ShortRoleNameRepositoryABC, short_role_names: ShortRoleNameRepositoryABC,
bot: DiscordBotServiceABC, bot: DiscordBotServiceABC,
db: DatabaseContextABC, db: DatabaseContextABC,
permissions: PermissionService, permissions: PermissionServiceWithCache,
short_role_name_service: ShortRoleNameService, short_role_name_service: ShortRoleNameService,
): ):
QueryABC.__init__(self, "ShortRoleNameMutation") QueryABC.__init__(self, "ShortRoleNameMutation")

View File

@ -16,7 +16,7 @@ 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_data.service.technician_config_seeder import TechnicianConfigSeeder
from bot_graphql.abc.query_abc import QueryABC from bot_graphql.abc.query_abc import QueryABC
from bot_core.service.permission_service import PermissionService from bot_core.service.permission_service_with_cache import PermissionServiceWithCache
class TechnicianConfigMutation(QueryABC): class TechnicianConfigMutation(QueryABC):
@ -31,7 +31,7 @@ class TechnicianConfigMutation(QueryABC):
config_service: ConfigService, config_service: ConfigService,
tech_seeder: TechnicianConfigSeeder, tech_seeder: TechnicianConfigSeeder,
client_utils: ClientUtilsABC, client_utils: ClientUtilsABC,
permissions: PermissionService, permissions: PermissionServiceWithCache,
): ):
QueryABC.__init__(self, "TechnicianConfigMutation") QueryABC.__init__(self, "TechnicianConfigMutation")

View File

@ -11,7 +11,7 @@ from flask import request
from bot_api.configuration.authentication_settings import AuthenticationSettings from bot_api.configuration.authentication_settings import AuthenticationSettings
from bot_core.configuration.feature_flags_enum import FeatureFlagsEnum from bot_core.configuration.feature_flags_enum import FeatureFlagsEnum
from bot_core.configuration.feature_flags_settings import FeatureFlagsSettings from bot_core.configuration.feature_flags_settings import FeatureFlagsSettings
from bot_core.service.permission_service import PermissionService from bot_core.service.permission_service_with_cache import PermissionServiceWithCache
from bot_data.abc.api_key_repository_abc import ApiKeyRepositoryABC from bot_data.abc.api_key_repository_abc import ApiKeyRepositoryABC
from bot_data.abc.game_server_repository_abc import GameServerRepositoryABC from bot_data.abc.game_server_repository_abc import GameServerRepositoryABC
from bot_data.abc.server_repository_abc import ServerRepositoryABC from bot_data.abc.server_repository_abc import ServerRepositoryABC
@ -40,7 +40,7 @@ class UserJoinedGameServerMutation(QueryABC):
user_game_idents: UserGameIdentRepositoryABC, user_game_idents: UserGameIdentRepositoryABC,
bot: DiscordBotServiceABC, bot: DiscordBotServiceABC,
db: DatabaseContextABC, db: DatabaseContextABC,
permissions: PermissionService, permissions: PermissionServiceWithCache,
auth_settings: AuthenticationSettings, auth_settings: AuthenticationSettings,
): ):
QueryABC.__init__(self, "UserJoinedGameServerMutation") QueryABC.__init__(self, "UserJoinedGameServerMutation")

View File

@ -4,7 +4,7 @@ from cpl_core.database.context import DatabaseContextABC
from cpl_discord.service import DiscordBotServiceABC from cpl_discord.service import DiscordBotServiceABC
from bot_api.route.route import Route from bot_api.route.route import Route
from bot_core.service.permission_service import PermissionService from bot_core.service.permission_service_with_cache import PermissionServiceWithCache
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.user_repository_abc import UserRepositoryABC from bot_data.abc.user_repository_abc import UserRepositoryABC
@ -23,7 +23,7 @@ class UserMutation(QueryABC):
users: UserRepositoryABC, users: UserRepositoryABC,
bot: DiscordBotServiceABC, bot: DiscordBotServiceABC,
db: DatabaseContextABC, db: DatabaseContextABC,
permissions: PermissionService, permissions: PermissionServiceWithCache,
levels: LevelRepositoryABC, levels: LevelRepositoryABC,
level_service: LevelService, level_service: LevelService,
user_warnings: UserWarningsRepositoryABC, user_warnings: UserWarningsRepositoryABC,

View File

@ -11,16 +11,16 @@ Discord bot for customers of sh-edraft.de
""" """
__title__ = "bot_graphql.queries" __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.2.8" __version__ = '1.2.9'
from collections import namedtuple from collections import namedtuple
# imports: # imports:
VersionInfo = namedtuple("VersionInfo", "major minor micro") VersionInfo = namedtuple('VersionInfo', 'major minor micro')
version_info = VersionInfo(major="1", minor="2", micro="8") version_info = VersionInfo(major='1', minor='2', micro='9')

View File

@ -11,16 +11,16 @@ Discord bot for customers of sh-edraft.de
""" """
__title__ = "bot_graphql.queries.discord" __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.2.8" __version__ = '1.2.9'
from collections import namedtuple from collections import namedtuple
# imports: # imports:
VersionInfo = namedtuple("VersionInfo", "major minor micro") VersionInfo = namedtuple('VersionInfo', 'major minor micro')
version_info = VersionInfo(major="1", minor="2", micro="8") version_info = VersionInfo(major='1', minor='2', micro='9')

View File

@ -11,16 +11,16 @@ Discord bot for customers of sh-edraft.de
""" """
__title__ = "modules.achievements" __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.2.8" __version__ = '1.2.9'
from collections import namedtuple from collections import namedtuple
# imports # imports
VersionInfo = namedtuple("VersionInfo", "major minor micro") VersionInfo = namedtuple('VersionInfo', 'major minor micro')
version_info = VersionInfo(major="1", minor="2", micro="8") version_info = VersionInfo(major='1', minor='2', micro='9')

View File

@ -4,7 +4,7 @@
"Version": { "Version": {
"Major": "1", "Major": "1",
"Minor": "2", "Minor": "2",
"Micro": "8" "Micro": "9"
}, },
"Author": "Sven Heidemann", "Author": "Sven Heidemann",
"AuthorEmail": "sven.heidemann@sh-edraft.de", "AuthorEmail": "sven.heidemann@sh-edraft.de",

View File

@ -11,16 +11,16 @@ Discord bot for customers of sh-edraft.de
""" """
__title__ = "modules.achievements.commands" __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.2.8" __version__ = '1.2.9'
from collections import namedtuple from collections import namedtuple
# imports # imports
VersionInfo = namedtuple("VersionInfo", "major minor micro") VersionInfo = namedtuple('VersionInfo', 'major minor micro')
version_info = VersionInfo(major="1", minor="2", micro="8") version_info = VersionInfo(major='1', minor='2', micro='9')

View File

@ -11,16 +11,16 @@ Discord bot for customers of sh-edraft.de
""" """
__title__ = "modules.achievements.events" __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.2.8" __version__ = '1.2.9'
from collections import namedtuple from collections import namedtuple
# imports # imports
VersionInfo = namedtuple("VersionInfo", "major minor micro") VersionInfo = namedtuple('VersionInfo', 'major minor micro')
version_info = VersionInfo(major="1", minor="2", micro="8") version_info = VersionInfo(major='1', minor='2', micro='9')

View File

@ -50,7 +50,9 @@ class AchievementOnMessageEvent(OnMessageABC):
return return
server = self._servers.get_server_by_discord_id(message.guild.id) server = self._servers.get_server_by_discord_id(message.guild.id)
user = self._users.get_user_by_discord_id_and_server_id(message.author.id, server.id) user = self._users.find_user_by_discord_id_and_server_id(message.author.id, server.id)
if user is None:
return
user.message_count += 1 user.message_count += 1
self._users.update_user(user) self._users.update_user(user)

View File

@ -11,16 +11,16 @@ Discord bot for customers of sh-edraft.de
""" """
__title__ = "modules.achievements.model" __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.2.8" __version__ = '1.2.9'
from collections import namedtuple from collections import namedtuple
# imports # imports
VersionInfo = namedtuple("VersionInfo", "major minor micro") VersionInfo = namedtuple('VersionInfo', 'major minor micro')
version_info = VersionInfo(major="1", minor="2", micro="8") version_info = VersionInfo(major='1', minor='2', micro='9')

View File

@ -11,16 +11,16 @@ Discord bot for customers of sh-edraft.de
""" """
__title__ = "modules.auto_role" __title__ = 'modules.auto_role'
__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.2.8" __version__ = '1.2.9'
from collections import namedtuple from collections import namedtuple
# imports: # imports:
VersionInfo = namedtuple("VersionInfo", "major minor micro") VersionInfo = namedtuple('VersionInfo', 'major minor micro')
version_info = VersionInfo(major="1", minor="2", micro="8") version_info = VersionInfo(major='1', minor='2', micro='9')

View File

@ -4,7 +4,7 @@
"Version": { "Version": {
"Major": "1", "Major": "1",
"Minor": "2", "Minor": "2",
"Micro": "8" "Micro": "9"
}, },
"Author": "", "Author": "",
"AuthorEmail": "", "AuthorEmail": "",

View File

@ -11,16 +11,16 @@ Discord bot for customers of sh-edraft.de
""" """
__title__ = "modules.auto_role.command" __title__ = 'modules.auto_role.command'
__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.2.8" __version__ = '1.2.9'
from collections import namedtuple from collections import namedtuple
# imports: # imports:
VersionInfo = namedtuple("VersionInfo", "major minor micro") VersionInfo = namedtuple('VersionInfo', 'major minor micro')
version_info = VersionInfo(major="1", minor="2", micro="8") version_info = VersionInfo(major='1', minor='2', micro='9')

View File

@ -11,16 +11,16 @@ Discord bot for customers of sh-edraft.de
""" """
__title__ = "modules.auto_role.events" __title__ = 'modules.auto_role.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.2.8" __version__ = '1.2.9'
from collections import namedtuple from collections import namedtuple
# imports: # imports:
VersionInfo = namedtuple("VersionInfo", "major minor micro") VersionInfo = namedtuple('VersionInfo', 'major minor micro')
version_info = VersionInfo(major="1", minor="2", micro="8") version_info = VersionInfo(major='1', minor='2', micro='9')

View File

@ -11,16 +11,16 @@ Discord bot for customers of sh-edraft.de
""" """
__title__ = "modules.auto_role.helper" __title__ = 'modules.auto_role.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.2.8" __version__ = '1.2.9'
from collections import namedtuple from collections import namedtuple
# imports: # imports:
VersionInfo = namedtuple("VersionInfo", "major minor micro") VersionInfo = namedtuple('VersionInfo', 'major minor micro')
version_info = VersionInfo(major="1", minor="2", micro="8") version_info = VersionInfo(major='1', minor='2', micro='9')

View File

@ -11,16 +11,16 @@ Discord bot for customers of sh-edraft.de
""" """
__title__ = "modules.base" __title__ = 'modules.base'
__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.2.8" __version__ = '1.2.9'
from collections import namedtuple from collections import namedtuple
# imports # imports
VersionInfo = namedtuple("VersionInfo", "major minor micro") VersionInfo = namedtuple('VersionInfo', 'major minor micro')
version_info = VersionInfo(major="1", minor="2", micro="8") version_info = VersionInfo(major='1', minor='2', micro='9')

View File

@ -4,7 +4,7 @@
"Version": { "Version": {
"Major": "1", "Major": "1",
"Minor": "2", "Minor": "2",
"Micro": "8" "Micro": "9"
}, },
"Author": "", "Author": "",
"AuthorEmail": "", "AuthorEmail": "",

View File

@ -8,6 +8,7 @@ from bot_core.abc.module_abc import ModuleABC
from bot_core.abc.task_abc import TaskABC from bot_core.abc.task_abc import TaskABC
from bot_core.configuration.feature_flags_enum import FeatureFlagsEnum from bot_core.configuration.feature_flags_enum import FeatureFlagsEnum
from modules.base.command.scheduled_events_group import ScheduledEventsCommand from modules.base.command.scheduled_events_group import ScheduledEventsCommand
from modules.base.events.base_on_member_update_event import BaseOnMemberUpdateEvent
from modules.base.tasks.birthday_watcher import BirthdayWatcher from modules.base.tasks.birthday_watcher import BirthdayWatcher
from modules.base.command.afk_command import AFKCommand from modules.base.command.afk_command import AFKCommand
from modules.base.command.game_server_group import GameServerGroup from modules.base.command.game_server_group import GameServerGroup
@ -117,3 +118,4 @@ class BaseModule(ModuleABC):
DiscordEventTypesEnum.on_guild_join.value, DiscordEventTypesEnum.on_guild_join.value,
BaseOnGuildJoinEvent, BaseOnGuildJoinEvent,
) )
services.add_transient(DiscordEventTypesEnum.on_member_update.value, BaseOnMemberUpdateEvent)

View File

@ -11,16 +11,16 @@ Discord bot for customers of sh-edraft.de
""" """
__title__ = "modules.base.command" __title__ = 'modules.base.command'
__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.2.8" __version__ = '1.2.9'
from collections import namedtuple from collections import namedtuple
# imports # imports
VersionInfo = namedtuple("VersionInfo", "major minor micro") VersionInfo = namedtuple('VersionInfo', 'major minor micro')
version_info = VersionInfo(major="1", minor="2", micro="8") version_info = VersionInfo(major='1', minor='2', micro='9')

View File

@ -11,16 +11,16 @@ Discord bot for customers of sh-edraft.de
""" """
__title__ = "modules.base.events" __title__ = 'modules.base.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.2.8" __version__ = '1.2.9'
from collections import namedtuple from collections import namedtuple
# imports: # imports:
VersionInfo = namedtuple("VersionInfo", "major minor micro") VersionInfo = namedtuple('VersionInfo', 'major minor micro')
version_info = VersionInfo(major="1", minor="2", micro="8") version_info = VersionInfo(major='1', minor='2', micro='9')

View File

@ -0,0 +1,24 @@
import discord
from cpl_core.logging import LoggerABC
from cpl_discord.events import OnMemberUpdateABC
from cpl_discord.service import DiscordBotServiceABC
from bot_core.service.permission_service_with_cache import PermissionServiceWithCache
class BaseOnMemberUpdateEvent(OnMemberUpdateABC):
def __init__(
self,
logger: LoggerABC,
bot: DiscordBotServiceABC,
permissions: PermissionServiceWithCache,
):
OnMemberUpdateABC.__init__(self)
self._logger = logger
self._bot = bot
self._permissions = permissions
async def on_member_update(self, before: discord.member.Member, after: discord.member.Member):
if before.roles != after.roles:
self._permissions.reset_cache()

View File

@ -86,6 +86,11 @@ class BaseOnMessageEvent(OnMessageABC):
if message is None or message.guild is None: if message is None or message.guild is None:
return return
server = self._servers.get_server_by_discord_id(message.guild.id)
user = self._users.find_user_by_discord_id_and_server_id(message.author.id, server.id)
if user is None:
return
self._logger.info(__name__, f"Received message: {LogMessageHelper.get_log_string(message)}") self._logger.info(__name__, f"Received message: {LogMessageHelper.get_log_string(message)}")
self._append_received_message_count(message.guild.id) self._append_received_message_count(message.guild.id)

View File

@ -11,16 +11,16 @@ Discord bot for customers of sh-edraft.de
""" """
__title__ = "modules.base.forms" __title__ = 'modules.base.forms'
__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.2.8" __version__ = '1.2.9'
from collections import namedtuple from collections import namedtuple
# imports # imports
VersionInfo = namedtuple("VersionInfo", "major minor micro") VersionInfo = namedtuple('VersionInfo', 'major minor micro')
version_info = VersionInfo(major="1", minor="2", micro="8") version_info = VersionInfo(major='1', minor='2', micro='9')

View File

@ -11,16 +11,16 @@ Discord bot for customers of sh-edraft.de
""" """
__title__ = "modules.base.helper" __title__ = 'modules.base.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.2.8" __version__ = '1.2.9'
from collections import namedtuple from collections import namedtuple
# imports: # imports:
VersionInfo = namedtuple("VersionInfo", "major minor micro") VersionInfo = namedtuple('VersionInfo', 'major minor micro')
version_info = VersionInfo(major="1", minor="2", micro="8") version_info = VersionInfo(major='1', minor='2', micro='9')

View File

@ -11,16 +11,16 @@ Discord bot for customers of sh-edraft.de
""" """
__title__ = "modules.base.model" __title__ = 'modules.base.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.2.8" __version__ = '1.2.9'
from collections import namedtuple from collections import namedtuple
# imports: # imports:
VersionInfo = namedtuple("VersionInfo", "major minor micro") VersionInfo = namedtuple('VersionInfo', 'major minor micro')
version_info = VersionInfo(major="1", minor="2", micro="8") version_info = VersionInfo(major='1', minor='2', micro='9')

View File

@ -11,16 +11,16 @@ Discord bot for customers of sh-edraft.de
""" """
__title__ = "modules.base.service" __title__ = 'modules.base.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.2.8" __version__ = '1.2.9'
from collections import namedtuple from collections import namedtuple
# imports # imports
VersionInfo = namedtuple("VersionInfo", "major minor micro") VersionInfo = namedtuple('VersionInfo', 'major minor micro')
version_info = VersionInfo(major="1", minor="2", micro="8") version_info = VersionInfo(major='1', minor='2', micro='9')

View File

@ -11,16 +11,16 @@ Discord bot for customers of sh-edraft.de
""" """
__title__ = "modules.base.tasks" __title__ = 'modules.base.tasks'
__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.2.8" __version__ = '1.2.9'
from collections import namedtuple from collections import namedtuple
# imports: # imports:
VersionInfo = namedtuple("VersionInfo", "major minor micro") VersionInfo = namedtuple('VersionInfo', 'major minor micro')
version_info = VersionInfo(major="1", minor="2", micro="8") version_info = VersionInfo(major='1', minor='2', micro='9')

View File

@ -11,16 +11,16 @@ Discord bot for customers of sh-edraft.de
""" """
__title__ = "modules.boot_log" __title__ = 'modules.boot_log'
__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.2.8" __version__ = '1.2.9'
from collections import namedtuple from collections import namedtuple
# imports: # imports:
VersionInfo = namedtuple("VersionInfo", "major minor micro") VersionInfo = namedtuple('VersionInfo', 'major minor micro')
version_info = VersionInfo(major="1", minor="2", micro="8") version_info = VersionInfo(major='1', minor='2', micro='9')

View File

@ -4,7 +4,7 @@
"Version": { "Version": {
"Major": "1", "Major": "1",
"Minor": "2", "Minor": "2",
"Micro": "8" "Micro": "9"
}, },
"Author": "", "Author": "",
"AuthorEmail": "", "AuthorEmail": "",

View File

@ -11,16 +11,16 @@ Discord bot for customers of sh-edraft.de
""" """
__title__ = "modules.config" __title__ = 'modules.config'
__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.2.8" __version__ = '1.2.9'
from collections import namedtuple from collections import namedtuple
# imports # imports
VersionInfo = namedtuple("VersionInfo", "major minor micro") VersionInfo = namedtuple('VersionInfo', 'major minor micro')
version_info = VersionInfo(major="1", minor="2", micro="8") version_info = VersionInfo(major='1', minor='2', micro='9')

View File

@ -4,7 +4,7 @@
"Version": { "Version": {
"Major": "1", "Major": "1",
"Minor": "2", "Minor": "2",
"Micro": "8" "Micro": "9"
}, },
"Author": "", "Author": "",
"AuthorEmail": "", "AuthorEmail": "",

View File

@ -11,16 +11,16 @@ Discord bot for customers of sh-edraft.de
""" """
__title__ = "modules.config.events" __title__ = 'modules.config.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.2.8" __version__ = '1.2.9'
from collections import namedtuple from collections import namedtuple
# imports # imports
VersionInfo = namedtuple("VersionInfo", "major minor micro") VersionInfo = namedtuple('VersionInfo', 'major minor micro')
version_info = VersionInfo(major="1", minor="2", micro="8") version_info = VersionInfo(major='1', minor='2', micro='9')

View File

@ -11,16 +11,16 @@ Discord bot for customers of sh-edraft.de
""" """
__title__ = "modules.config.service" __title__ = 'modules.config.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.2.8" __version__ = '1.2.9'
from collections import namedtuple from collections import namedtuple
# imports: # imports:
VersionInfo = namedtuple("VersionInfo", "major minor micro") VersionInfo = namedtuple('VersionInfo', 'major minor micro')
version_info = VersionInfo(major="1", minor="2", micro="8") version_info = VersionInfo(major='1', minor='2', micro='9')

Some files were not shown because too many files have changed in this diff Show More