Compare commits
74 Commits
aa2c80ec12
...
1.1.4
Author | SHA1 | Date | |
---|---|---|---|
481c0f881a | |||
a065c703eb | |||
f72ea68f66 | |||
9226a1188e | |||
c06cb02cd6 | |||
20747001b0 | |||
b4be6b4ac2 | |||
bd3dd39dbc | |||
9e0905d49e | |||
3c0719f50e | |||
77d3668a06 | |||
e914c7d02b | |||
b40f521212 | |||
d40ca88cd5 | |||
1e63baed97 | |||
cdfd151851 | |||
12fbc972d9 | |||
dca939f025 | |||
ed9b893c12 | |||
731f80bd5f | |||
85852bf2f0 | |||
2c3ef97a14 | |||
9ec65689ba | |||
44f5de32a5 | |||
c016d5fc84 | |||
306ce2664c | |||
3ce5471ef4 | |||
4cdd6c05bf | |||
d364ea1b4c | |||
6fa08ea828 | |||
296c6e8044 | |||
0541f3dfde | |||
052e0f976a | |||
f41dfc9be2 | |||
74437fdc20 | |||
df2b660b75 | |||
12f231aa41 | |||
2f3ae229c9 | |||
5bbed854a4 | |||
2321c12bc9 | |||
1cdfd1291f | |||
223946ad76 | |||
4ea1b5b94c | |||
919970d199 | |||
19ed164845 | |||
92001a45be | |||
78b761a672 | |||
7bfa39f459 | |||
d586cca672 | |||
efce172c01 | |||
0974325148 | |||
206754919f | |||
b49512e28d | |||
fa71759a20 | |||
9338e35504 | |||
2956dcb9c2 | |||
762bebf416 | |||
f3b5cef253 | |||
6869c5a671 | |||
352b44be0f | |||
5912708d3a | |||
45a3127696 | |||
10c20621a8 | |||
49e0e44461 | |||
ec6b080ba6 | |||
28944755ac | |||
7318239b2d | |||
cf66d246a9 | |||
41fe6faa52 | |||
685c96bb38 | |||
2c3e5268e4 | |||
2d5ce58612 | |||
fe3d67eff5 | |||
4cea31fce5 |
Submodule kdb-bot/docker updated: 3107817939...7ae4783874
@@ -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.0rc2"
|
__version__ = "1.1.4"
|
||||||
|
|
||||||
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="0.rc2")
|
version_info = VersionInfo(major="1", minor="1", micro="4")
|
||||||
|
@@ -4,7 +4,7 @@
|
|||||||
"Version": {
|
"Version": {
|
||||||
"Major": "1",
|
"Major": "1",
|
||||||
"Minor": "1",
|
"Minor": "1",
|
||||||
"Micro": "0.rc2"
|
"Micro": "4"
|
||||||
},
|
},
|
||||||
"Author": "Sven Heidemann",
|
"Author": "Sven Heidemann",
|
||||||
"AuthorEmail": "sven.heidemann@sh-edraft.de",
|
"AuthorEmail": "sven.heidemann@sh-edraft.de",
|
||||||
@@ -30,7 +30,8 @@
|
|||||||
"requests-oauthlib==1.3.1",
|
"requests-oauthlib==1.3.1",
|
||||||
"icmplib==3.0.3",
|
"icmplib==3.0.3",
|
||||||
"ariadne==0.20.1",
|
"ariadne==0.20.1",
|
||||||
"cryptography==41.0.2"
|
"cryptography==41.0.2",
|
||||||
|
"discord>=2.3.2"
|
||||||
],
|
],
|
||||||
"DevDependencies": [
|
"DevDependencies": [
|
||||||
"cpl-cli==2023.4.0.post3",
|
"cpl-cli==2023.4.0.post3",
|
||||||
|
@@ -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.0rc2"
|
__version__ = "1.1.4"
|
||||||
|
|
||||||
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="0.rc2")
|
version_info = VersionInfo(major="1", minor="1", micro="4")
|
||||||
|
@@ -12,6 +12,7 @@ from bot_data.migration.auto_role_migration import AutoRoleMigration
|
|||||||
from bot_data.migration.config_feature_flags_migration import ConfigFeatureFlagsMigration
|
from bot_data.migration.config_feature_flags_migration import ConfigFeatureFlagsMigration
|
||||||
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.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
|
||||||
@@ -48,3 +49,4 @@ class StartupMigrationExtension(StartupExtensionABC):
|
|||||||
services.add_transient(MigrationABC, AchievementsMigration) # 14.06.2023 #268 - 1.1.0
|
services.add_transient(MigrationABC, AchievementsMigration) # 14.06.2023 #268 - 1.1.0
|
||||||
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
|
||||||
|
@@ -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.0rc2"
|
__version__ = "1.1.4"
|
||||||
|
|
||||||
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="0.rc2")
|
version_info = VersionInfo(major="1", minor="1", micro="4")
|
||||||
|
@@ -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.0rc2"
|
__version__ = "1.1.4"
|
||||||
|
|
||||||
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="0.rc2")
|
version_info = VersionInfo(major="1", minor="1", micro="4")
|
||||||
|
@@ -4,7 +4,7 @@
|
|||||||
"Version": {
|
"Version": {
|
||||||
"Major": "1",
|
"Major": "1",
|
||||||
"Minor": "1",
|
"Minor": "1",
|
||||||
"Micro": "0.rc2"
|
"Micro": "4"
|
||||||
},
|
},
|
||||||
"Author": "",
|
"Author": "",
|
||||||
"AuthorEmail": "",
|
"AuthorEmail": "",
|
||||||
|
Submodule kdb-bot/src/bot_api/config updated: 3d81c81c9e...b6ffed4da1
@@ -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.0rc2"
|
__version__ = "1.1.4"
|
||||||
|
|
||||||
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="0.rc2")
|
version_info = VersionInfo(major="1", minor="1", micro="4")
|
||||||
|
@@ -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.0rc2"
|
__version__ = "1.1.4"
|
||||||
|
|
||||||
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="0.rc2")
|
version_info = VersionInfo(major="1", minor="1", micro="4")
|
||||||
|
@@ -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.0rc2"
|
__version__ = "1.1.4"
|
||||||
|
|
||||||
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="0.rc2")
|
version_info = VersionInfo(major="1", minor="1", micro="4")
|
||||||
|
@@ -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.0rc2"
|
__version__ = "1.1.4"
|
||||||
|
|
||||||
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="0.rc2")
|
version_info = VersionInfo(major="1", minor="1", micro="4")
|
||||||
|
@@ -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.0rc2"
|
__version__ = "1.1.4"
|
||||||
|
|
||||||
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="0.rc2")
|
version_info = VersionInfo(major="1", minor="1", micro="4")
|
||||||
|
@@ -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.0rc2"
|
__version__ = "1.1.4"
|
||||||
|
|
||||||
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="0.rc2")
|
version_info = VersionInfo(major="1", minor="1", micro="4")
|
||||||
|
@@ -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.0rc2"
|
__version__ = "1.1.4"
|
||||||
|
|
||||||
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="0.rc2")
|
version_info = VersionInfo(major="1", minor="1", micro="4")
|
||||||
|
@@ -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.0rc2"
|
__version__ = "1.1.4"
|
||||||
|
|
||||||
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="0.rc2")
|
version_info = VersionInfo(major="1", minor="1", micro="4")
|
||||||
|
@@ -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.0rc2"
|
__version__ = "1.1.4"
|
||||||
|
|
||||||
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="0.rc2")
|
version_info = VersionInfo(major="1", minor="1", micro="4")
|
||||||
|
@@ -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.0rc2"
|
__version__ = "1.1.4"
|
||||||
|
|
||||||
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="0.rc2")
|
version_info = VersionInfo(major="1", minor="1", micro="4")
|
||||||
|
@@ -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.0rc2"
|
__version__ = "1.1.4"
|
||||||
|
|
||||||
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="0.rc2")
|
version_info = VersionInfo(major="1", minor="1", micro="4")
|
||||||
|
@@ -494,8 +494,13 @@ class AuthService(AuthServiceABC):
|
|||||||
added_user = True
|
added_user = True
|
||||||
|
|
||||||
db_user = self._auth_users.get_auth_user_by_email(user_dto.email)
|
db_user = self._auth_users.get_auth_user_by_email(user_dto.email)
|
||||||
if db_user.users.count() == 0:
|
user_ids = db_user.users.select(lambda x: x.id)
|
||||||
members.for_each(lambda x: self._auth_users.add_auth_user_user_rel(AuthUserUsersRelation(db_user, x)))
|
|
||||||
|
for user in self._users.get_users_by_discord_id(dc_id):
|
||||||
|
if user.id in user_ids:
|
||||||
|
continue
|
||||||
|
|
||||||
|
self._auth_users.add_auth_user_user_rel(AuthUserUsersRelation(db_user, user))
|
||||||
|
|
||||||
if db_user.confirmation_id is not None and not added_user:
|
if db_user.confirmation_id is not None and not added_user:
|
||||||
raise ServiceException(ServiceErrorCode.Forbidden, "E-Mail not verified")
|
raise ServiceException(ServiceErrorCode.Forbidden, "E-Mail not verified")
|
||||||
|
@@ -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.0rc2"
|
__version__ = "1.1.4"
|
||||||
|
|
||||||
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="0.rc2")
|
version_info = VersionInfo(major="1", minor="1", micro="4")
|
||||||
|
@@ -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.0rc2"
|
__version__ = "1.1.4"
|
||||||
|
|
||||||
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="0.rc2")
|
version_info = VersionInfo(major="1", minor="1", micro="4")
|
||||||
|
@@ -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.0rc2"
|
__version__ = "1.1.4"
|
||||||
|
|
||||||
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="0.rc2")
|
version_info = VersionInfo(major="1", minor="1", micro="4")
|
||||||
|
@@ -1,6 +1,6 @@
|
|||||||
from abc import ABC, abstractmethod
|
from abc import ABC, abstractmethod
|
||||||
from datetime import datetime
|
from datetime import datetime
|
||||||
from typing import Callable
|
from typing import Callable, Union
|
||||||
|
|
||||||
import discord
|
import discord
|
||||||
from cpl_query.extension import List
|
from cpl_query.extension import List
|
||||||
@@ -67,3 +67,7 @@ class ClientUtilsABC(ABC):
|
|||||||
self, discord_channel_id: int, discord_message_id: int, rule: AutoRoleRule, guild: discord.Guild
|
self, discord_channel_id: int, discord_message_id: int, rule: AutoRoleRule, guild: discord.Guild
|
||||||
):
|
):
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
@abstractmethod
|
||||||
|
async def check_default_role(self, member: Union[discord.User, discord.Member]):
|
||||||
|
pass
|
||||||
|
@@ -4,7 +4,7 @@
|
|||||||
"Version": {
|
"Version": {
|
||||||
"Major": "1",
|
"Major": "1",
|
||||||
"Minor": "1",
|
"Minor": "1",
|
||||||
"Micro": "0.rc2"
|
"Micro": "4"
|
||||||
},
|
},
|
||||||
"Author": "Sven Heidemann",
|
"Author": "Sven Heidemann",
|
||||||
"AuthorEmail": "sven.heidemann@sh-edraft.de",
|
"AuthorEmail": "sven.heidemann@sh-edraft.de",
|
||||||
|
@@ -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.0rc2"
|
__version__ = "1.1.4"
|
||||||
|
|
||||||
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="0.rc2")
|
version_info = VersionInfo(major="1", minor="1", micro="4")
|
||||||
|
@@ -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.0rc2"
|
__version__ = "1.1.4"
|
||||||
|
|
||||||
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="0.rc2")
|
version_info = VersionInfo(major="1", minor="1", micro="4")
|
||||||
|
@@ -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.0rc2"
|
__version__ = "1.1.4"
|
||||||
|
|
||||||
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="0.rc2")
|
version_info = VersionInfo(major="1", minor="1", micro="4")
|
||||||
|
@@ -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.0rc2"
|
__version__ = "1.1.4"
|
||||||
|
|
||||||
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="0.rc2")
|
version_info = VersionInfo(major="1", minor="1", micro="4")
|
||||||
|
@@ -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.0rc2"
|
__version__ = "1.1.4"
|
||||||
|
|
||||||
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="0.rc2")
|
version_info = VersionInfo(major="1", minor="1", micro="4")
|
||||||
|
@@ -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.0rc2"
|
__version__ = "1.1.4"
|
||||||
|
|
||||||
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="0.rc2")
|
version_info = VersionInfo(major="1", minor="1", micro="4")
|
||||||
|
@@ -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.0rc2"
|
__version__ = "1.1.4"
|
||||||
|
|
||||||
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="0.rc2")
|
version_info = VersionInfo(major="1", minor="1", micro="4")
|
||||||
|
@@ -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.0rc2"
|
__version__ = "1.1.4"
|
||||||
|
|
||||||
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="0.rc2")
|
version_info = VersionInfo(major="1", minor="1", micro="4")
|
||||||
|
@@ -1,5 +1,5 @@
|
|||||||
from datetime import datetime
|
from datetime import datetime
|
||||||
from typing import Callable
|
from typing import Callable, Union
|
||||||
|
|
||||||
import discord
|
import discord
|
||||||
from cpl_core.configuration import ConfigurationABC
|
from cpl_core.configuration import ConfigurationABC
|
||||||
@@ -218,3 +218,20 @@ class ClientUtilsService(ClientUtilsABC):
|
|||||||
f"Cannot add reaction {rule.emoji_name} to message: {discord_message_id}",
|
f"Cannot add reaction {rule.emoji_name} to message: {discord_message_id}",
|
||||||
e,
|
e,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
async def check_default_role(self, member: Union[discord.User, discord.Member]):
|
||||||
|
try:
|
||||||
|
server = self._servers.get_server_by_discord_id(member.guild.id)
|
||||||
|
settings: ServerConfig = self._config.get_configuration(f"ServerConfig_{server.discord_id}")
|
||||||
|
|
||||||
|
if settings.default_role_id is None:
|
||||||
|
return
|
||||||
|
|
||||||
|
default_role = member.guild.get_role(settings.default_role_id)
|
||||||
|
if default_role in member.roles:
|
||||||
|
return
|
||||||
|
|
||||||
|
await member.add_roles(default_role)
|
||||||
|
|
||||||
|
except Exception as e:
|
||||||
|
self._logger.error(__name__, f"Cannot check for default role for member {member.id}", e)
|
||||||
|
@@ -6,6 +6,7 @@ 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.abc.client_utils_abc import ClientUtilsABC
|
||||||
from bot_core.logging.database_logger import DatabaseLogger
|
from bot_core.logging.database_logger import DatabaseLogger
|
||||||
from bot_core.pipes.date_time_offset_pipe import DateTimeOffsetPipe
|
from bot_core.pipes.date_time_offset_pipe import DateTimeOffsetPipe
|
||||||
from bot_data.abc.client_repository_abc import ClientRepositoryABC
|
from bot_data.abc.client_repository_abc import ClientRepositoryABC
|
||||||
@@ -44,6 +45,7 @@ class DataIntegrityService:
|
|||||||
user_joins_vc: UserJoinedVoiceChannelRepositoryABC,
|
user_joins_vc: UserJoinedVoiceChannelRepositoryABC,
|
||||||
user_joined_gs: UserJoinedGameServerRepositoryABC,
|
user_joined_gs: UserJoinedGameServerRepositoryABC,
|
||||||
achievement_service: AchievementService,
|
achievement_service: AchievementService,
|
||||||
|
client_utils: ClientUtilsABC,
|
||||||
dtp: DateTimeOffsetPipe,
|
dtp: DateTimeOffsetPipe,
|
||||||
):
|
):
|
||||||
self._config = config
|
self._config = config
|
||||||
@@ -60,6 +62,7 @@ class DataIntegrityService:
|
|||||||
self._user_joins_vc = user_joins_vc
|
self._user_joins_vc = user_joins_vc
|
||||||
self._user_joined_gs = user_joined_gs
|
self._user_joined_gs = user_joined_gs
|
||||||
self._achievements = achievement_service
|
self._achievements = achievement_service
|
||||||
|
self._client_utils = client_utils
|
||||||
self._dtp = dtp
|
self._dtp = dtp
|
||||||
|
|
||||||
self._is_for_shutdown = False
|
self._is_for_shutdown = False
|
||||||
@@ -291,7 +294,7 @@ class DataIntegrityService:
|
|||||||
self._user_joins_vc.update_user_joined_voice_channel(join)
|
self._user_joins_vc.update_user_joined_voice_channel(join)
|
||||||
|
|
||||||
if self._is_for_shutdown:
|
if self._is_for_shutdown:
|
||||||
user.xp = round(join.time * settings.xp_per_ontime_hour)
|
user.xp += round(join.time * settings.xp_per_ontime_hour)
|
||||||
self._users.update_user(user)
|
self._users.update_user(user)
|
||||||
|
|
||||||
self._db_context.save_changes()
|
self._db_context.save_changes()
|
||||||
@@ -356,7 +359,7 @@ class DataIntegrityService:
|
|||||||
|
|
||||||
self._user_joined_gs.update_user_joined_game_server(join)
|
self._user_joined_gs.update_user_joined_game_server(join)
|
||||||
if self._is_for_shutdown:
|
if self._is_for_shutdown:
|
||||||
user.xp = round(join.time * settings.xp_per_ontime_hour)
|
user.xp += round(join.time * settings.xp_per_ontime_hour)
|
||||||
self._users.update_user(user)
|
self._users.update_user(user)
|
||||||
|
|
||||||
self._db_context.save_changes()
|
self._db_context.save_changes()
|
||||||
@@ -382,10 +385,16 @@ class DataIntegrityService:
|
|||||||
|
|
||||||
await self._achievements.validate_achievements_for_user(user)
|
await self._achievements.validate_achievements_for_user(user)
|
||||||
|
|
||||||
|
async def _check_default_role(self):
|
||||||
|
for guild in self._bot.guilds:
|
||||||
|
for member in guild.members:
|
||||||
|
await self._client_utils.check_default_role(member)
|
||||||
|
|
||||||
async def check_data_integrity(self, is_for_shutdown=False):
|
async def check_data_integrity(self, is_for_shutdown=False):
|
||||||
if is_for_shutdown != self._is_for_shutdown:
|
if is_for_shutdown != self._is_for_shutdown:
|
||||||
self._is_for_shutdown = is_for_shutdown
|
self._is_for_shutdown = is_for_shutdown
|
||||||
|
|
||||||
|
await self._check_default_role()
|
||||||
self._check_known_users()
|
self._check_known_users()
|
||||||
self._check_servers()
|
self._check_servers()
|
||||||
self._check_clients()
|
self._check_clients()
|
||||||
|
@@ -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.0rc2"
|
__version__ = "1.1.4"
|
||||||
|
|
||||||
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="0.rc2")
|
version_info = VersionInfo(major="1", minor="1", micro="4")
|
||||||
|
@@ -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.0rc2"
|
__version__ = "1.1.4"
|
||||||
|
|
||||||
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="0.rc2")
|
version_info = VersionInfo(major="1", minor="1", micro="4")
|
||||||
|
@@ -14,6 +14,10 @@ class AuthUserRepositoryABC(ABC):
|
|||||||
def __init__(self):
|
def __init__(self):
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
@abstractmethod
|
||||||
|
def get_auth_user_relation_ids(self, auth_user: AuthUser) -> List[int]:
|
||||||
|
pass
|
||||||
|
|
||||||
@abstractmethod
|
@abstractmethod
|
||||||
def get_all_auth_users(self) -> List[AuthUser]:
|
def get_all_auth_users(self) -> List[AuthUser]:
|
||||||
pass
|
pass
|
||||||
|
@@ -4,7 +4,7 @@
|
|||||||
"Version": {
|
"Version": {
|
||||||
"Major": "1",
|
"Major": "1",
|
||||||
"Minor": "1",
|
"Minor": "1",
|
||||||
"Micro": "0.rc2"
|
"Micro": "4"
|
||||||
},
|
},
|
||||||
"Author": "Sven Heidemann",
|
"Author": "Sven Heidemann",
|
||||||
"AuthorEmail": "sven.heidemann@sh-edraft.de",
|
"AuthorEmail": "sven.heidemann@sh-edraft.de",
|
||||||
|
@@ -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.0rc2"
|
__version__ = "1.1.4"
|
||||||
|
|
||||||
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="0.rc2")
|
version_info = VersionInfo(major="1", minor="1", micro="4")
|
||||||
|
34
kdb-bot/src/bot_data/migration/default_role_migration.py
Normal file
34
kdb-bot/src/bot_data/migration/default_role_migration.py
Normal file
@@ -0,0 +1,34 @@
|
|||||||
|
from bot_core.logging.database_logger import DatabaseLogger
|
||||||
|
from bot_data.abc.migration_abc import MigrationABC
|
||||||
|
from bot_data.db_context import DBContext
|
||||||
|
|
||||||
|
|
||||||
|
class DefaultRoleMigration(MigrationABC):
|
||||||
|
name = "1.1.3_DefaultRoleMigration"
|
||||||
|
|
||||||
|
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 DefaultRoleId BIGINT NULL AFTER LoginMessageChannelId;
|
||||||
|
"""
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
def downgrade(self):
|
||||||
|
self._cursor.execute(
|
||||||
|
str(
|
||||||
|
f"""
|
||||||
|
ALTER TABLE CFG_Server DROP COLUMN DefaultRoleId;
|
||||||
|
"""
|
||||||
|
)
|
||||||
|
)
|
@@ -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.0rc2"
|
__version__ = "1.1.4"
|
||||||
|
|
||||||
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="0.rc2")
|
version_info = VersionInfo(major="1", minor="1", micro="4")
|
||||||
|
@@ -26,6 +26,7 @@ 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,
|
||||||
feature_flags: dict[FeatureFlagsEnum],
|
feature_flags: dict[FeatureFlagsEnum],
|
||||||
server: Server,
|
server: Server,
|
||||||
afk_channel_ids: List[int],
|
afk_channel_ids: List[int],
|
||||||
@@ -48,6 +49,7 @@ class ServerConfig(TableABC, ConfigurationModelABC):
|
|||||||
self._help_voice_channel_id = help_voice_channel_id
|
self._help_voice_channel_id = help_voice_channel_id
|
||||||
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._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
|
||||||
@@ -165,6 +167,14 @@ class ServerConfig(TableABC, ConfigurationModelABC):
|
|||||||
def login_message_channel_id(self, value: int):
|
def login_message_channel_id(self, value: int):
|
||||||
self._login_message_channel_id = value
|
self._login_message_channel_id = value
|
||||||
|
|
||||||
|
@property
|
||||||
|
def default_role_id(self) -> int:
|
||||||
|
return self._default_role_id
|
||||||
|
|
||||||
|
@default_role_id.setter
|
||||||
|
def default_role_id(self, value: int):
|
||||||
|
self._default_role_id = value
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def feature_flags(self) -> dict[FeatureFlagsEnum]:
|
def feature_flags(self) -> dict[FeatureFlagsEnum]:
|
||||||
return self._feature_flags
|
return self._feature_flags
|
||||||
@@ -237,6 +247,7 @@ class ServerConfig(TableABC, ConfigurationModelABC):
|
|||||||
`HelpVoiceChannelId`,
|
`HelpVoiceChannelId`,
|
||||||
`TeamChannelId`,
|
`TeamChannelId`,
|
||||||
`LoginMessageChannelId`,
|
`LoginMessageChannelId`,
|
||||||
|
`DefaultRoleId`,
|
||||||
`FeatureFlags`,
|
`FeatureFlags`,
|
||||||
`ServerId`
|
`ServerId`
|
||||||
) VALUES (
|
) VALUES (
|
||||||
@@ -253,6 +264,7 @@ 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},
|
||||||
'{json.dumps(self._feature_flags)}',
|
'{json.dumps(self._feature_flags)}',
|
||||||
{self._server.id}
|
{self._server.id}
|
||||||
);
|
);
|
||||||
@@ -277,6 +289,7 @@ 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},
|
||||||
`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};
|
||||||
|
@@ -17,6 +17,7 @@ class ServerConfigHistory(HistoryTableABC):
|
|||||||
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,
|
||||||
feature_flags: dict[str],
|
feature_flags: dict[str],
|
||||||
server_id: int,
|
server_id: int,
|
||||||
deleted: bool,
|
deleted: bool,
|
||||||
@@ -40,6 +41,7 @@ class ServerConfigHistory(HistoryTableABC):
|
|||||||
self._help_voice_channel_id = help_voice_channel_id
|
self._help_voice_channel_id = help_voice_channel_id
|
||||||
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._feature_flags = feature_flags
|
self._feature_flags = feature_flags
|
||||||
self._server_id = server_id
|
self._server_id = server_id
|
||||||
|
|
||||||
@@ -99,6 +101,10 @@ class ServerConfigHistory(HistoryTableABC):
|
|||||||
def login_message_channel_id(self) -> int:
|
def login_message_channel_id(self) -> int:
|
||||||
return self._login_message_channel_id
|
return self._login_message_channel_id
|
||||||
|
|
||||||
|
@property
|
||||||
|
def default_role_id(self) -> int:
|
||||||
|
return self._default_role_id
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def feature_flags(self) -> dict[str]:
|
def feature_flags(self) -> dict[str]:
|
||||||
return self._feature_flags
|
return self._feature_flags
|
||||||
|
@@ -15,8 +15,8 @@ class User(TableABC):
|
|||||||
self,
|
self,
|
||||||
dc_id: int,
|
dc_id: int,
|
||||||
xp: int,
|
xp: int,
|
||||||
message_count: int,
|
|
||||||
reaction_count: int,
|
reaction_count: int,
|
||||||
|
message_count: int,
|
||||||
server: Optional[Server],
|
server: Optional[Server],
|
||||||
created_at: datetime = None,
|
created_at: datetime = None,
|
||||||
modified_at: datetime = None,
|
modified_at: datetime = None,
|
||||||
@@ -25,8 +25,8 @@ class User(TableABC):
|
|||||||
self._user_id = id
|
self._user_id = id
|
||||||
self._discord_id = dc_id
|
self._discord_id = dc_id
|
||||||
self._xp = xp
|
self._xp = xp
|
||||||
self._message_count = message_count
|
|
||||||
self._reaction_count = reaction_count
|
self._reaction_count = reaction_count
|
||||||
|
self._message_count = message_count
|
||||||
self._server = server
|
self._server = server
|
||||||
|
|
||||||
TableABC.__init__(self)
|
TableABC.__init__(self)
|
||||||
|
@@ -39,7 +39,10 @@ class UserJoinedVoiceChannel(TableABC):
|
|||||||
@property
|
@property
|
||||||
@ServiceProviderABC.inject
|
@ServiceProviderABC.inject
|
||||||
def channel_name(self, bot: DiscordBotServiceABC) -> str:
|
def channel_name(self, bot: DiscordBotServiceABC) -> str:
|
||||||
return bot.get_channel(self.channel_id).name
|
channel = bot.get_channel(self.channel_id)
|
||||||
|
if channel is None:
|
||||||
|
return ""
|
||||||
|
return channel.name
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def user(self) -> User:
|
def user(self) -> User:
|
||||||
|
@@ -41,7 +41,10 @@ class UserJoinedVoiceChannelHistory(HistoryTableABC):
|
|||||||
@property
|
@property
|
||||||
@ServiceProviderABC.inject
|
@ServiceProviderABC.inject
|
||||||
def channel_name(self, bot: DiscordBotServiceABC) -> str:
|
def channel_name(self, bot: DiscordBotServiceABC) -> str:
|
||||||
return bot.get_channel(self.channel_id).name
|
channel = bot.get_channel(self.channel_id)
|
||||||
|
if channel is None:
|
||||||
|
return ""
|
||||||
|
return channel.name
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def user(self) -> int:
|
def user(self) -> int:
|
||||||
|
@@ -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.0rc2"
|
__version__ = "1.1.4"
|
||||||
|
|
||||||
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="0.rc2")
|
version_info = VersionInfo(major="1", minor="1", micro="4")
|
||||||
|
@@ -50,13 +50,7 @@ class AuthUserRepositoryService(AuthUserRepositoryABC):
|
|||||||
auth_user_id=self._get_value_from_result(au_result[0]),
|
auth_user_id=self._get_value_from_result(au_result[0]),
|
||||||
)
|
)
|
||||||
|
|
||||||
self._logger.trace(
|
for user_id in self.get_auth_user_relation_ids(auth_user):
|
||||||
__name__,
|
|
||||||
f"Send SQL command: {auth_user.get_select_user_id_from_relations()}",
|
|
||||||
)
|
|
||||||
results = self._context.select(auth_user.get_select_user_id_from_relations())
|
|
||||||
for result in results:
|
|
||||||
user_id = self._get_value_from_result(result[0])
|
|
||||||
if user_id is None:
|
if user_id is None:
|
||||||
continue
|
continue
|
||||||
|
|
||||||
@@ -65,6 +59,19 @@ class AuthUserRepositoryService(AuthUserRepositoryABC):
|
|||||||
|
|
||||||
return auth_user
|
return auth_user
|
||||||
|
|
||||||
|
def get_auth_user_relation_ids(self, auth_user: AuthUser) -> List[int]:
|
||||||
|
self._logger.trace(
|
||||||
|
__name__,
|
||||||
|
f"Send SQL command: {auth_user.get_select_user_id_from_relations()}",
|
||||||
|
)
|
||||||
|
relation_ids = List(int)
|
||||||
|
results = self._context.select(auth_user.get_select_user_id_from_relations())
|
||||||
|
for result in results:
|
||||||
|
self._logger.trace(__name__, f"Got auth user relation with id {result[0]}")
|
||||||
|
relation_ids.append(result[0])
|
||||||
|
|
||||||
|
return relation_ids
|
||||||
|
|
||||||
def get_all_auth_users(self) -> List[AuthUser]:
|
def get_all_auth_users(self) -> List[AuthUser]:
|
||||||
users = List(AuthUser)
|
users = List(AuthUser)
|
||||||
self._logger.trace(__name__, f"Send SQL command: {AuthUser.get_select_all_string()}")
|
self._logger.trace(__name__, f"Send SQL command: {AuthUser.get_select_all_string()}")
|
||||||
|
@@ -64,12 +64,13 @@ class ServerConfigRepositoryService(ServerConfigRepositoryABC):
|
|||||||
result[11],
|
result[11],
|
||||||
result[12],
|
result[12],
|
||||||
result[13],
|
result[13],
|
||||||
json.loads(result[14]),
|
result[14],
|
||||||
self._servers.get_server_by_id(result[15]),
|
json.loads(result[15]),
|
||||||
self._get_afk_channel_ids(result[15]),
|
self._servers.get_server_by_id(result[16]),
|
||||||
self._get_team_role_ids(result[15]),
|
self._get_afk_channel_ids(result[16]),
|
||||||
result[16],
|
self._get_team_role_ids(result[16]),
|
||||||
result[17],
|
result[17],
|
||||||
|
result[18],
|
||||||
id=result[0],
|
id=result[0],
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@@ -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.0rc2"
|
__version__ = "1.1.4"
|
||||||
|
|
||||||
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="0.rc2")
|
version_info = VersionInfo(major="1", minor="1", micro="4")
|
||||||
|
@@ -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.0rc2"
|
__version__ = "1.1.4"
|
||||||
|
|
||||||
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="0.rc2")
|
version_info = VersionInfo(major="1", minor="1", micro="4")
|
||||||
|
@@ -10,6 +10,7 @@ from bot_api.exception.service_error_code_enum import ServiceErrorCode
|
|||||||
from bot_api.exception.service_exception import ServiceException
|
from bot_api.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_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
|
||||||
from bot_data.model.auto_role import AutoRole
|
from bot_data.model.auto_role import AutoRole
|
||||||
@@ -78,7 +79,17 @@ class QueryABC(ObjectType):
|
|||||||
bot: DiscordBotServiceABC = services.get_service(DiscordBotServiceABC)
|
bot: DiscordBotServiceABC = services.get_service(DiscordBotServiceABC)
|
||||||
|
|
||||||
access = False
|
access = False
|
||||||
if type(element) == AutoRole:
|
if type(element) == Achievement:
|
||||||
|
element: Achievement = 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) == AutoRole:
|
||||||
element: AutoRole = element
|
element: AutoRole = element
|
||||||
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": "0.rc2"
|
"Micro": "4"
|
||||||
},
|
},
|
||||||
"Author": "Sven Heidemann",
|
"Author": "Sven Heidemann",
|
||||||
"AuthorEmail": "sven.heidemann@sh-edraft.de",
|
"AuthorEmail": "sven.heidemann@sh-edraft.de",
|
||||||
|
@@ -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.0rc2"
|
__version__ = "1.1.4"
|
||||||
|
|
||||||
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="0.rc2")
|
version_info = VersionInfo(major="1", minor="1", micro="4")
|
||||||
|
53
kdb-bot/src/bot_graphql/graphql/discord.gql
Normal file
53
kdb-bot/src/bot_graphql/graphql/discord.gql
Normal file
@@ -0,0 +1,53 @@
|
|||||||
|
type Discord {
|
||||||
|
guilds(filter: GuildFilter): [Guild]
|
||||||
|
users(filter: DiscordUserFilter): [DiscordUser]
|
||||||
|
}
|
||||||
|
|
||||||
|
type Guild {
|
||||||
|
id: ID
|
||||||
|
name: String
|
||||||
|
|
||||||
|
channels(filter: ChannelFilter): [Channel]
|
||||||
|
roles: [Role]
|
||||||
|
emojis: [Emoji]
|
||||||
|
}
|
||||||
|
|
||||||
|
input GuildFilter {
|
||||||
|
id: ID
|
||||||
|
name: String
|
||||||
|
}
|
||||||
|
|
||||||
|
type Channel {
|
||||||
|
id: String
|
||||||
|
name: String
|
||||||
|
type: String
|
||||||
|
}
|
||||||
|
|
||||||
|
input ChannelFilter {
|
||||||
|
id: String
|
||||||
|
name: String
|
||||||
|
type: String
|
||||||
|
}
|
||||||
|
|
||||||
|
type Role {
|
||||||
|
id: String
|
||||||
|
name: String
|
||||||
|
}
|
||||||
|
|
||||||
|
type DiscordUser {
|
||||||
|
id: String
|
||||||
|
name: String
|
||||||
|
bot: Boolean
|
||||||
|
}
|
||||||
|
|
||||||
|
input DiscordUserFilter {
|
||||||
|
id: ID
|
||||||
|
name: String
|
||||||
|
bot: Boolean
|
||||||
|
}
|
||||||
|
|
||||||
|
type Emoji {
|
||||||
|
id: String
|
||||||
|
name: String
|
||||||
|
url: String
|
||||||
|
}
|
@@ -38,7 +38,6 @@ type Query {
|
|||||||
achievementOperators: [String]
|
achievementOperators: [String]
|
||||||
|
|
||||||
technicianConfig: TechnicianConfig
|
technicianConfig: TechnicianConfig
|
||||||
|
|
||||||
guilds(filter: GuildFilter): [Guild]
|
|
||||||
possibleFeatureFlags: [String]
|
possibleFeatureFlags: [String]
|
||||||
|
discord: Discord
|
||||||
}
|
}
|
@@ -13,6 +13,7 @@ type ServerConfig implements TableWithHistoryQuery {
|
|||||||
helpVoiceChannelId: String
|
helpVoiceChannelId: String
|
||||||
teamChannelId: String
|
teamChannelId: String
|
||||||
loginMessageChannelId: String
|
loginMessageChannelId: String
|
||||||
|
defaultRoleId: String
|
||||||
featureFlagCount: Int
|
featureFlagCount: Int
|
||||||
featureFlags: [FeatureFlag]
|
featureFlags: [FeatureFlag]
|
||||||
|
|
||||||
@@ -43,6 +44,7 @@ type ServerConfigHistory implements HistoryTableQuery {
|
|||||||
helpVoiceChannelId: String
|
helpVoiceChannelId: String
|
||||||
teamChannelId: String
|
teamChannelId: String
|
||||||
loginMessageChannelId: String
|
loginMessageChannelId: String
|
||||||
|
defaultRoleId: String
|
||||||
featureFlagCount: Int
|
featureFlagCount: Int
|
||||||
featureFlags: [FeatureFlag]
|
featureFlags: [FeatureFlag]
|
||||||
|
|
||||||
@@ -91,6 +93,7 @@ input ServerConfigInput {
|
|||||||
helpVoiceChannelId: String
|
helpVoiceChannelId: String
|
||||||
teamChannelId: String
|
teamChannelId: String
|
||||||
loginMessageChannelId: String
|
loginMessageChannelId: String
|
||||||
|
defaultRoleId: String
|
||||||
featureFlags: [FeatureFlagInput]
|
featureFlags: [FeatureFlagInput]
|
||||||
|
|
||||||
afkChannelIds: [String]
|
afkChannelIds: [String]
|
@@ -37,6 +37,12 @@ from bot_graphql.queries.auto_role_rule_history_query import AutoRoleRuleHistory
|
|||||||
from bot_graphql.queries.auto_role_rule_query import AutoRoleRuleQuery
|
from bot_graphql.queries.auto_role_rule_query import AutoRoleRuleQuery
|
||||||
from bot_graphql.queries.client_history_query import ClientHistoryQuery
|
from bot_graphql.queries.client_history_query import ClientHistoryQuery
|
||||||
from bot_graphql.queries.client_query import ClientQuery
|
from bot_graphql.queries.client_query import ClientQuery
|
||||||
|
from bot_graphql.queries.discord.channel_query import ChannelQuery
|
||||||
|
from bot_graphql.queries.discord.discord_query import DiscordQuery
|
||||||
|
from bot_graphql.queries.discord.discord_user_query import DiscordUserQuery
|
||||||
|
from bot_graphql.queries.discord.emoji_query import EmojiQuery
|
||||||
|
from bot_graphql.queries.discord.guild_query import GuildQuery
|
||||||
|
from bot_graphql.queries.discord.role_query import RoleQuery
|
||||||
from bot_graphql.queries.game_server_query import GameServerQuery
|
from bot_graphql.queries.game_server_query import GameServerQuery
|
||||||
from bot_graphql.queries.known_user_history_query import KnownUserHistoryQuery
|
from bot_graphql.queries.known_user_history_query import KnownUserHistoryQuery
|
||||||
from bot_graphql.queries.known_user_query import KnownUserQuery
|
from bot_graphql.queries.known_user_query import KnownUserQuery
|
||||||
@@ -105,6 +111,13 @@ class GraphQLModule(ModuleABC):
|
|||||||
services.add_transient(QueryABC, UserJoinedGameServerHistoryQuery)
|
services.add_transient(QueryABC, UserJoinedGameServerHistoryQuery)
|
||||||
services.add_transient(QueryABC, UserJoinedGameServerQuery)
|
services.add_transient(QueryABC, UserJoinedGameServerQuery)
|
||||||
|
|
||||||
|
services.add_transient(QueryABC, DiscordQuery)
|
||||||
|
services.add_transient(QueryABC, GuildQuery)
|
||||||
|
services.add_transient(QueryABC, ChannelQuery)
|
||||||
|
services.add_transient(QueryABC, RoleQuery)
|
||||||
|
services.add_transient(QueryABC, EmojiQuery)
|
||||||
|
services.add_transient(QueryABC, DiscordUserQuery)
|
||||||
|
|
||||||
# filters
|
# filters
|
||||||
services.add_transient(FilterABC, AutoRoleFilter)
|
services.add_transient(FilterABC, AutoRoleFilter)
|
||||||
services.add_transient(FilterABC, AutoRoleRuleFilter)
|
services.add_transient(FilterABC, AutoRoleRuleFilter)
|
||||||
|
26
kdb-bot/src/bot_graphql/model/__init__.py
Normal file
26
kdb-bot/src/bot_graphql/model/__init__.py
Normal file
@@ -0,0 +1,26 @@
|
|||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
|
"""
|
||||||
|
bot Keksdose bot
|
||||||
|
~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
Discord bot for the Keksdose discord Server
|
||||||
|
|
||||||
|
:copyright: (c) 2022 - 2023 sh-edraft.de
|
||||||
|
:license: MIT, see LICENSE for more details.
|
||||||
|
|
||||||
|
"""
|
||||||
|
|
||||||
|
__title__ = "bot_graphql.model"
|
||||||
|
__author__ = "Sven Heidemann"
|
||||||
|
__license__ = "MIT"
|
||||||
|
__copyright__ = "Copyright (c) 2022 - 2023 sh-edraft.de"
|
||||||
|
__version__ = "1.1.4"
|
||||||
|
|
||||||
|
from collections import namedtuple
|
||||||
|
|
||||||
|
|
||||||
|
# imports
|
||||||
|
|
||||||
|
VersionInfo = namedtuple("VersionInfo", "major minor micro")
|
||||||
|
version_info = VersionInfo(major="1", minor="1", micro="4")
|
@@ -1,29 +0,0 @@
|
|||||||
type Guild {
|
|
||||||
id: ID
|
|
||||||
name: String
|
|
||||||
|
|
||||||
channels: [Channel]
|
|
||||||
roles: [Role]
|
|
||||||
emojis: [Emoji]
|
|
||||||
}
|
|
||||||
|
|
||||||
input GuildFilter {
|
|
||||||
id: ID
|
|
||||||
}
|
|
||||||
|
|
||||||
type Channel {
|
|
||||||
id: String
|
|
||||||
name: String
|
|
||||||
type: String
|
|
||||||
}
|
|
||||||
|
|
||||||
type Role {
|
|
||||||
id: String
|
|
||||||
name: String
|
|
||||||
}
|
|
||||||
|
|
||||||
type Emoji {
|
|
||||||
id: String
|
|
||||||
name: String
|
|
||||||
url: String
|
|
||||||
}
|
|
16
kdb-bot/src/bot_graphql/model/discord.py
Normal file
16
kdb-bot/src/bot_graphql/model/discord.py
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
from cpl_query.extension import List
|
||||||
|
from discord import Guild, User
|
||||||
|
|
||||||
|
|
||||||
|
class Discord:
|
||||||
|
def __init__(self, guilds: List[Guild], users: List[User]):
|
||||||
|
self._guilds = guilds
|
||||||
|
self._users = users
|
||||||
|
|
||||||
|
@property
|
||||||
|
def guilds(self) -> List[Guild]:
|
||||||
|
return self._guilds
|
||||||
|
|
||||||
|
@property
|
||||||
|
def users(self) -> List[User]:
|
||||||
|
return self._users
|
@@ -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.0rc2"
|
__version__ = "1.1.4"
|
||||||
|
|
||||||
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="0.rc2")
|
version_info = VersionInfo(major="1", minor="1", micro="4")
|
||||||
|
@@ -43,7 +43,7 @@ class ServerConfigMutation(QueryABC):
|
|||||||
if "id" not in input:
|
if "id" not in input:
|
||||||
raise ValueError("Id not set")
|
raise ValueError("Id not set")
|
||||||
|
|
||||||
server_config = self._server_configs.get_server_config_by_server(input["id"])
|
server_config = self._server_configs.get_server_config_by_id(int(input["id"]))
|
||||||
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)
|
||||||
|
|
||||||
server_config.message_delete_timer = (
|
server_config.message_delete_timer = (
|
||||||
@@ -89,6 +89,9 @@ class ServerConfigMutation(QueryABC):
|
|||||||
if "loginMessageChannelId" in input
|
if "loginMessageChannelId" in input
|
||||||
else server_config.login_message_channel_id
|
else server_config.login_message_channel_id
|
||||||
)
|
)
|
||||||
|
server_config.default_role_id = (
|
||||||
|
input["defaultRoleId"] if "defaultRoleId" in input else server_config.default_role_id
|
||||||
|
)
|
||||||
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
|
||||||
@@ -137,7 +140,7 @@ class ServerConfigMutation(QueryABC):
|
|||||||
return server_config
|
return server_config
|
||||||
|
|
||||||
def _update_afk_channel_ids(self, new_config: ServerConfig):
|
def _update_afk_channel_ids(self, new_config: ServerConfig):
|
||||||
old_config = self._server_configs.get_server_config_by_id(new_config.server.id)
|
old_config = self._server_configs.get_server_config_by_server(new_config.server.id)
|
||||||
for channel_id in old_config.afk_channel_ids:
|
for channel_id in old_config.afk_channel_ids:
|
||||||
if channel_id in new_config.afk_channel_ids:
|
if channel_id in new_config.afk_channel_ids:
|
||||||
continue
|
continue
|
||||||
@@ -155,7 +158,7 @@ class ServerConfigMutation(QueryABC):
|
|||||||
)
|
)
|
||||||
|
|
||||||
def _update_team_role_ids(self, new_config: ServerConfig):
|
def _update_team_role_ids(self, new_config: ServerConfig):
|
||||||
old_config = self._server_configs.get_server_config_by_id(new_config.server.id)
|
old_config = self._server_configs.get_server_config_by_server(new_config.server.id)
|
||||||
for role_id in old_config.team_role_ids:
|
for role_id in old_config.team_role_ids:
|
||||||
if role_id.role_id in new_config.team_role_ids.select(lambda x: int(x.role_id)):
|
if role_id.role_id in new_config.team_role_ids.select(lambda x: int(x.role_id)):
|
||||||
continue
|
continue
|
||||||
|
@@ -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.0rc2"
|
__version__ = "1.1.4"
|
||||||
|
|
||||||
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="0.rc2")
|
version_info = VersionInfo(major="1", minor="1", micro="4")
|
||||||
|
@@ -40,7 +40,7 @@ class ClientQuery(DataQueryWithHistoryABC):
|
|||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def resolve_received_message_count(client: Client, *_):
|
def resolve_received_message_count(client: Client, *_):
|
||||||
return client.received_command_count
|
return client.received_message_count
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def resolve_deleted_message_count(client: Client, *_):
|
def resolve_deleted_message_count(client: Client, *_):
|
||||||
|
@@ -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.0rc2"
|
__version__ = "1.1.4"
|
||||||
|
|
||||||
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="0.rc2")
|
version_info = VersionInfo(major="1", minor="1", micro="4")
|
||||||
|
@@ -1,10 +1,10 @@
|
|||||||
from bot_graphql.abc.data_query_abc import DataQueryABC
|
from bot_graphql.abc.query_abc import QueryABC
|
||||||
|
|
||||||
|
|
||||||
class ChannelQuery(DataQueryABC):
|
class ChannelQuery(QueryABC):
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
DataQueryABC.__init__(self, "Channel")
|
QueryABC.__init__(self, "Channel")
|
||||||
|
|
||||||
self.set_field("id", lambda c, *_: c.id)
|
self.set_field("id", lambda c, *_: c.id)
|
||||||
self.set_field("name", lambda c, *_: c.name)
|
self.set_field("name", lambda c, *_: c.name)
|
||||||
self.set_field("type", lambda c, *_: type(c))
|
self.set_field("type", lambda c, *_: type(c).__name__)
|
||||||
|
48
kdb-bot/src/bot_graphql/queries/discord/discord_query.py
Normal file
48
kdb-bot/src/bot_graphql/queries/discord/discord_query.py
Normal file
@@ -0,0 +1,48 @@
|
|||||||
|
from cpl_discord.service import DiscordBotServiceABC
|
||||||
|
from cpl_query.extension import List
|
||||||
|
|
||||||
|
from bot_graphql.abc.query_abc import QueryABC
|
||||||
|
|
||||||
|
|
||||||
|
class DiscordQuery(QueryABC):
|
||||||
|
def __init__(
|
||||||
|
self,
|
||||||
|
bot: DiscordBotServiceABC,
|
||||||
|
):
|
||||||
|
QueryABC.__init__(self, "Discord")
|
||||||
|
|
||||||
|
self._bot = bot
|
||||||
|
|
||||||
|
self.set_field("guilds", self._resolve_guilds)
|
||||||
|
self.set_field("users", self._resolve_users)
|
||||||
|
|
||||||
|
def _resolve_guilds(self, *_, filter=None):
|
||||||
|
guilds = self._bot.guilds
|
||||||
|
|
||||||
|
if filter is None:
|
||||||
|
return guilds
|
||||||
|
|
||||||
|
if "id" in filter:
|
||||||
|
guilds = self._bot.guilds.where(lambda g: g.id == int(filter["id"]))
|
||||||
|
|
||||||
|
if "name" in filter:
|
||||||
|
guilds = self._bot.guilds.where(lambda g: g.name == filter["name"])
|
||||||
|
|
||||||
|
return guilds
|
||||||
|
|
||||||
|
def _resolve_users(self, *_, filter=None):
|
||||||
|
users = List(any).extend(self._bot.users)
|
||||||
|
|
||||||
|
if filter is None:
|
||||||
|
return users
|
||||||
|
|
||||||
|
if "id" in filter:
|
||||||
|
users = users.where(lambda g: g.id == int(filter["id"]))
|
||||||
|
|
||||||
|
if "name" in filter:
|
||||||
|
users = users.where(lambda g: g.name == filter["name"])
|
||||||
|
|
||||||
|
if "bot" in filter:
|
||||||
|
users = users.where(lambda g: g.bot == bool(filter["bot"]))
|
||||||
|
|
||||||
|
return users
|
@@ -0,0 +1,10 @@
|
|||||||
|
from bot_graphql.abc.query_abc import QueryABC
|
||||||
|
|
||||||
|
|
||||||
|
class DiscordUserQuery(QueryABC):
|
||||||
|
def __init__(self):
|
||||||
|
QueryABC.__init__(self, "DiscordUser")
|
||||||
|
|
||||||
|
self.set_field("id", lambda r, *_: r.id)
|
||||||
|
self.set_field("name", lambda r, *_: r.name)
|
||||||
|
self.set_field("bot", lambda r, *_: r.bot)
|
@@ -1,9 +1,9 @@
|
|||||||
from bot_graphql.abc.data_query_abc import DataQueryABC
|
from bot_graphql.abc.query_abc import QueryABC
|
||||||
|
|
||||||
|
|
||||||
class RoleQuery(DataQueryABC):
|
class EmojiQuery(QueryABC):
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
DataQueryABC.__init__(self, "Emoji")
|
QueryABC.__init__(self, "Emoji")
|
||||||
|
|
||||||
self.set_field("id", lambda e, *_: e.id)
|
self.set_field("id", lambda e, *_: e.id)
|
||||||
self.set_field("name", lambda e, *_: e.name)
|
self.set_field("name", lambda e, *_: e.name)
|
||||||
|
@@ -1,12 +1,38 @@
|
|||||||
from bot_graphql.abc.data_query_abc import DataQueryABC
|
from cpl_discord.service import DiscordBotServiceABC
|
||||||
|
from cpl_query.extension import List
|
||||||
|
from discord import Guild
|
||||||
|
|
||||||
|
from bot_graphql.abc.query_abc import QueryABC
|
||||||
|
|
||||||
|
|
||||||
class GuildQuery(DataQueryABC):
|
class GuildQuery(QueryABC):
|
||||||
def __init__(self):
|
def __init__(
|
||||||
DataQueryABC.__init__(self, "Guild")
|
self,
|
||||||
|
bot: DiscordBotServiceABC,
|
||||||
|
):
|
||||||
|
QueryABC.__init__(self, "Guild")
|
||||||
|
|
||||||
|
self._bot = bot
|
||||||
|
|
||||||
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", lambda g, *_: g.channels)
|
self.set_field("channels", self._resolve_channels)
|
||||||
self.set_field("roles", lambda g, *_: g.roles)
|
self.set_field("roles", lambda g, *_: g.roles)
|
||||||
self.set_field("emojis", lambda g, *_: g.emojis)
|
self.set_field("emojis", lambda g, *_: g.emojis)
|
||||||
|
|
||||||
|
def _resolve_channels(self, g: Guild, *_, filter=None):
|
||||||
|
users = List(any).extend(g.channels)
|
||||||
|
|
||||||
|
if filter is None:
|
||||||
|
return users
|
||||||
|
|
||||||
|
if "id" in filter:
|
||||||
|
users = users.where(lambda c: c.id == int(filter["id"]))
|
||||||
|
|
||||||
|
if "name" in filter:
|
||||||
|
users = users.where(lambda c: c.id == filter["name"])
|
||||||
|
|
||||||
|
if "type" in filter:
|
||||||
|
users = users.where(lambda c: type(c).__name__ == filter["type"])
|
||||||
|
|
||||||
|
return users
|
||||||
|
@@ -1,9 +1,9 @@
|
|||||||
from bot_graphql.abc.data_query_abc import DataQueryABC
|
from bot_graphql.abc.query_abc import QueryABC
|
||||||
|
|
||||||
|
|
||||||
class RoleQuery(DataQueryABC):
|
class RoleQuery(QueryABC):
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
DataQueryABC.__init__(self, "Role")
|
QueryABC.__init__(self, "Role")
|
||||||
|
|
||||||
self.set_field("id", lambda r, *_: r.id)
|
self.set_field("id", lambda r, *_: r.id)
|
||||||
self.set_field("name", lambda r, *_: r.name)
|
self.set_field("name", lambda r, *_: r.name)
|
||||||
|
@@ -24,6 +24,7 @@ class ServerConfigQuery(DataQueryWithHistoryABC):
|
|||||||
self.set_field("helpVoiceChannelId", lambda config, *_: config.help_voice_channel_id)
|
self.set_field("helpVoiceChannelId", lambda config, *_: config.help_voice_channel_id)
|
||||||
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.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,4 +1,5 @@
|
|||||||
from cpl_discord.service import DiscordBotServiceABC
|
from cpl_discord.service import DiscordBotServiceABC
|
||||||
|
from cpl_query.extension import List
|
||||||
|
|
||||||
from bot_core.configuration.feature_flags_enum import FeatureFlagsEnum
|
from bot_core.configuration.feature_flags_enum import FeatureFlagsEnum
|
||||||
from bot_data.abc.achievement_repository_abc import AchievementRepositoryABC
|
from bot_data.abc.achievement_repository_abc import AchievementRepositoryABC
|
||||||
@@ -24,6 +25,7 @@ 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
|
||||||
from bot_graphql.filter.user_joined_voice_channel_filter import UserJoinedVoiceChannelFilter
|
from bot_graphql.filter.user_joined_voice_channel_filter import UserJoinedVoiceChannelFilter
|
||||||
|
from bot_graphql.model.discord import Discord
|
||||||
from modules.achievements.achievement_service import AchievementService
|
from modules.achievements.achievement_service import AchievementService
|
||||||
|
|
||||||
|
|
||||||
@@ -47,8 +49,6 @@ class Query(QueryABC):
|
|||||||
):
|
):
|
||||||
QueryABC.__init__(self, "Query")
|
QueryABC.__init__(self, "Query")
|
||||||
|
|
||||||
self._bot = bot
|
|
||||||
|
|
||||||
self.add_collection("autoRole", lambda *_: auto_roles.get_auto_roles(), AutoRoleFilter)
|
self.add_collection("autoRole", lambda *_: auto_roles.get_auto_roles(), AutoRoleFilter)
|
||||||
self.add_collection("autoRoleRule", lambda *_: auto_roles.get_auto_role_rules(), AutoRoleRuleFilter)
|
self.add_collection("autoRoleRule", lambda *_: auto_roles.get_auto_role_rules(), AutoRoleRuleFilter)
|
||||||
self.add_collection("client", lambda *_: clients.get_clients(), ClientFilter)
|
self.add_collection("client", lambda *_: clients.get_clients(), ClientFilter)
|
||||||
@@ -73,13 +73,7 @@ class Query(QueryABC):
|
|||||||
self.add_collection("achievement", lambda *_: achievements.get_achievements(), AchievementFilter)
|
self.add_collection("achievement", lambda *_: achievements.get_achievements(), AchievementFilter)
|
||||||
self.set_field("technicianConfig", lambda *_: technician_config.get_technician_config())
|
self.set_field("technicianConfig", lambda *_: technician_config.get_technician_config())
|
||||||
|
|
||||||
self.set_field("guilds", self._resolve_guilds)
|
self.set_field("achievementAttributes", lambda *_: achievement_service.get_attributes())
|
||||||
self.set_field("achievementAttributes", lambda x, *_: achievement_service.get_attributes())
|
self.set_field("achievementOperators", lambda *_: achievement_service.get_operators())
|
||||||
self.set_field("achievementOperators", lambda x, *_: achievement_service.get_operators())
|
self.set_field("possibleFeatureFlags", lambda *_: [e.value for e in FeatureFlagsEnum])
|
||||||
self.set_field("possibleFeatureFlags", lambda x, *_: [e.value for e in FeatureFlagsEnum])
|
self.set_field("discord", lambda *_: Discord(bot.guilds, List(any).extend(bot.users)))
|
||||||
|
|
||||||
def _resolve_guilds(self, *_, filter=None):
|
|
||||||
if filter is None or "id" not in filter:
|
|
||||||
return self._bot.guilds
|
|
||||||
|
|
||||||
return self._bot.guilds.where(lambda g: g.id == int(filter["id"]))
|
|
||||||
|
@@ -10,7 +10,7 @@ from bot_graphql.query import Query
|
|||||||
|
|
||||||
class Schema:
|
class Schema:
|
||||||
def __init__(self, query: Query, mutation: Mutation, queries: list[QueryABC]):
|
def __init__(self, query: Query, mutation: Mutation, queries: list[QueryABC]):
|
||||||
type_defs = load_schema_from_path(os.path.join(os.path.dirname(os.path.realpath(__file__)), "model/"))
|
type_defs = load_schema_from_path(os.path.join(os.path.dirname(os.path.realpath(__file__)), "graphql/"))
|
||||||
self._schema = make_executable_schema(type_defs, query, mutation, *queries)
|
self._schema = make_executable_schema(type_defs, query, mutation, *queries)
|
||||||
|
|
||||||
@property
|
@property
|
||||||
|
@@ -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.0rc2"
|
__version__ = "1.1.4"
|
||||||
|
|
||||||
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="0.rc2")
|
version_info = VersionInfo(major="1", minor="1", micro="4")
|
||||||
|
@@ -4,7 +4,7 @@
|
|||||||
"Version": {
|
"Version": {
|
||||||
"Major": "1",
|
"Major": "1",
|
||||||
"Minor": "1",
|
"Minor": "1",
|
||||||
"Micro": "0.rc2"
|
"Micro": "4"
|
||||||
},
|
},
|
||||||
"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.0.rc2"
|
"cpl-core>=1.1.1"
|
||||||
],
|
],
|
||||||
"DevDependencies": [
|
"DevDependencies": [
|
||||||
"cpl-cli>=1.1.0.rc2"
|
"cpl-cli>=1.1.1"
|
||||||
],
|
],
|
||||||
"PythonVersion": ">=3.10.4",
|
"PythonVersion": ">=3.10.4",
|
||||||
"PythonPath": {},
|
"PythonPath": {},
|
||||||
|
@@ -10,6 +10,9 @@ from modules.achievements.achievement_attribute_resolver import AchievementAttri
|
|||||||
from modules.achievements.achievement_service import AchievementService
|
from modules.achievements.achievement_service import AchievementService
|
||||||
from modules.achievements.commands.achievements_group import AchievementGroup
|
from modules.achievements.commands.achievements_group import AchievementGroup
|
||||||
from modules.achievements.events.achievement_on_message_event import AchievementOnMessageEvent
|
from modules.achievements.events.achievement_on_message_event import AchievementOnMessageEvent
|
||||||
|
from modules.achievements.events.achievement_on_reaction_add_event import AchievementOnReactionAddEvent
|
||||||
|
from modules.achievements.events.achievement_on_reaction_remove_event import AchievementOnReactionRemoveEvent
|
||||||
|
from modules.achievements.events.achievement_on_voice_state_update_event import AchievementOnVoiceStateUpdateEvent
|
||||||
|
|
||||||
|
|
||||||
class AchievementsModule(ModuleABC):
|
class AchievementsModule(ModuleABC):
|
||||||
@@ -26,3 +29,6 @@ class AchievementsModule(ModuleABC):
|
|||||||
self._dc.add_command(AchievementGroup)
|
self._dc.add_command(AchievementGroup)
|
||||||
|
|
||||||
self._dc.add_event(DiscordEventTypesEnum.on_message.value, AchievementOnMessageEvent)
|
self._dc.add_event(DiscordEventTypesEnum.on_message.value, AchievementOnMessageEvent)
|
||||||
|
self._dc.add_event(DiscordEventTypesEnum.on_reaction_add.value, AchievementOnReactionAddEvent)
|
||||||
|
self._dc.add_event(DiscordEventTypesEnum.on_reaction_remove.value, AchievementOnReactionRemoveEvent)
|
||||||
|
self._dc.add_event(DiscordEventTypesEnum.on_voice_state_update.value, AchievementOnVoiceStateUpdateEvent)
|
||||||
|
@@ -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.0rc2"
|
__version__ = "1.1.4"
|
||||||
|
|
||||||
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="0.rc2")
|
version_info = VersionInfo(major="1", minor="1", micro="4")
|
||||||
|
@@ -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.0rc2"
|
__version__ = "1.1.4"
|
||||||
|
|
||||||
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="0.rc2")
|
version_info = VersionInfo(major="1", minor="1", micro="4")
|
||||||
|
@@ -53,6 +53,7 @@ class AchievementOnMessageEvent(OnMessageABC):
|
|||||||
user = self._users.get_user_by_discord_id_and_server_id(message.author.id, server.id)
|
user = self._users.get_user_by_discord_id_and_server_id(message.author.id, server.id)
|
||||||
|
|
||||||
user.message_count += 1
|
user.message_count += 1
|
||||||
|
self._users.update_user(user)
|
||||||
self._db.save_changes()
|
self._db.save_changes()
|
||||||
|
|
||||||
await self._achievements.validate_achievements_for_user(user)
|
await self._achievements.validate_achievements_for_user(user)
|
||||||
|
@@ -0,0 +1,62 @@
|
|||||||
|
from typing import Union
|
||||||
|
|
||||||
|
import discord
|
||||||
|
from cpl_core.configuration import ConfigurationABC
|
||||||
|
from cpl_core.database.context import DatabaseContextABC
|
||||||
|
from cpl_core.logging import LoggerABC
|
||||||
|
from cpl_discord.events import OnReactionAddABC
|
||||||
|
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.server_repository_abc import ServerRepositoryABC
|
||||||
|
from bot_data.abc.user_repository_abc import UserRepositoryABC
|
||||||
|
from bot_data.model.server_config import ServerConfig
|
||||||
|
from modules.achievements.achievement_service import AchievementService
|
||||||
|
|
||||||
|
|
||||||
|
class AchievementOnReactionAddEvent(OnReactionAddABC):
|
||||||
|
def __init__(
|
||||||
|
self,
|
||||||
|
config: ConfigurationABC,
|
||||||
|
logger: LoggerABC,
|
||||||
|
bot: DiscordBotServiceABC,
|
||||||
|
achievements: AchievementService,
|
||||||
|
db: DatabaseContextABC,
|
||||||
|
servers: ServerRepositoryABC,
|
||||||
|
users: UserRepositoryABC,
|
||||||
|
):
|
||||||
|
OnReactionAddABC.__init__(self)
|
||||||
|
|
||||||
|
self._config = config
|
||||||
|
self._logger = logger
|
||||||
|
self._bot = bot
|
||||||
|
self._achievements = achievements
|
||||||
|
self._db = db
|
||||||
|
self._servers = servers
|
||||||
|
self._users = users
|
||||||
|
|
||||||
|
async def on_reaction_add(self, reaction: discord.reaction.Reaction, user: Union[discord.Member, discord.User]):
|
||||||
|
if not isinstance(user, discord.Member):
|
||||||
|
return
|
||||||
|
|
||||||
|
if user.guild is None:
|
||||||
|
return
|
||||||
|
|
||||||
|
if user.bot:
|
||||||
|
return
|
||||||
|
|
||||||
|
server_config: ServerConfig = self._config.get_configuration(f"ServerConfig_{user.guild.id}")
|
||||||
|
if not FeatureFlagsSettings.get_flag_from_dict(
|
||||||
|
server_config.feature_flags, FeatureFlagsEnum.achievements_module
|
||||||
|
):
|
||||||
|
return
|
||||||
|
|
||||||
|
server = self._servers.get_server_by_discord_id(user.guild.id)
|
||||||
|
user = self._users.get_user_by_discord_id_and_server_id(user.id, server.id)
|
||||||
|
|
||||||
|
user.reaction_count += 1
|
||||||
|
self._db.save_changes()
|
||||||
|
self._users.update_user(user)
|
||||||
|
|
||||||
|
await self._achievements.validate_achievements_for_user(user)
|
@@ -0,0 +1,62 @@
|
|||||||
|
from typing import Union
|
||||||
|
|
||||||
|
import discord
|
||||||
|
from cpl_core.configuration import ConfigurationABC
|
||||||
|
from cpl_core.database.context import DatabaseContextABC
|
||||||
|
from cpl_core.logging import LoggerABC
|
||||||
|
from cpl_discord.events import OnReactionRemoveABC
|
||||||
|
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.server_repository_abc import ServerRepositoryABC
|
||||||
|
from bot_data.abc.user_repository_abc import UserRepositoryABC
|
||||||
|
from bot_data.model.server_config import ServerConfig
|
||||||
|
from modules.achievements.achievement_service import AchievementService
|
||||||
|
|
||||||
|
|
||||||
|
class AchievementOnReactionRemoveEvent(OnReactionRemoveABC):
|
||||||
|
def __init__(
|
||||||
|
self,
|
||||||
|
config: ConfigurationABC,
|
||||||
|
logger: LoggerABC,
|
||||||
|
bot: DiscordBotServiceABC,
|
||||||
|
achievements: AchievementService,
|
||||||
|
db: DatabaseContextABC,
|
||||||
|
servers: ServerRepositoryABC,
|
||||||
|
users: UserRepositoryABC,
|
||||||
|
):
|
||||||
|
OnReactionRemoveABC.__init__(self)
|
||||||
|
|
||||||
|
self._config = config
|
||||||
|
self._logger = logger
|
||||||
|
self._bot = bot
|
||||||
|
self._achievements = achievements
|
||||||
|
self._db = db
|
||||||
|
self._servers = servers
|
||||||
|
self._users = users
|
||||||
|
|
||||||
|
async def on_reaction_remove(self, reaction: discord.reaction.Reaction, user: Union[discord.Member, discord.User]):
|
||||||
|
if not isinstance(user, discord.Member):
|
||||||
|
return
|
||||||
|
|
||||||
|
if user.guild is None:
|
||||||
|
return
|
||||||
|
|
||||||
|
if user.bot:
|
||||||
|
return
|
||||||
|
|
||||||
|
server_config: ServerConfig = self._config.get_configuration(f"ServerConfig_{user.guild.id}")
|
||||||
|
if not FeatureFlagsSettings.get_flag_from_dict(
|
||||||
|
server_config.feature_flags, FeatureFlagsEnum.achievements_module
|
||||||
|
):
|
||||||
|
return
|
||||||
|
|
||||||
|
server = self._servers.get_server_by_discord_id(user.guild.id)
|
||||||
|
user = self._users.get_user_by_discord_id_and_server_id(user.id, server.id)
|
||||||
|
|
||||||
|
user.reaction_count -= 1
|
||||||
|
self._db.save_changes()
|
||||||
|
self._users.update_user(user)
|
||||||
|
|
||||||
|
await self._achievements.validate_achievements_for_user(user)
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user