Compare commits
12 Commits
892c983e1e
...
1.1.8
Author | SHA1 | Date | |
---|---|---|---|
3b79a61bb6 | |||
ef0fab1178 | |||
189b6370a9 | |||
4d18dd3845 | |||
7b7cbb20db | |||
84c2f5c2c4 | |||
c85c6df784 | |||
d5d898fa07 | |||
ef5ebabf81 | |||
f89b4c4ef5 | |||
8b277a2d19 | |||
a84e77e055 |
17
.gitea/issue_template.md
Normal file
17
.gitea/issue_template.md
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
#### Beschreibung
|
||||||
|
|
||||||
|
Als Produktmanager muss ich nun dieses Ticket ausfüllen.
|
||||||
|
|
||||||
|
#### Aktuelles Verhalten
|
||||||
|
|
||||||
|
* Was macht die Software aktuell?
|
||||||
|
|
||||||
|
#### Gewünschtes Verhalten
|
||||||
|
|
||||||
|
* Was soll die Software anders machen?
|
||||||
|
|
||||||
|
#### Akzeptanzkriterien
|
||||||
|
|
||||||
|
* Was muss erfüllt sein, damit das Ticket als abgeschlossen angesehen werden kann?
|
||||||
|
|
||||||
|
#### Anmerkungen
|
7
.gitea/pull_request_template.md
Normal file
7
.gitea/pull_request_template.md
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
#### Ticket Referenz:
|
||||||
|
|
||||||
|
#1
|
||||||
|
|
||||||
|
#### Gibt es etwas beim Review zu beachten?
|
||||||
|
|
||||||
|
Nein
|
@@ -3,7 +3,7 @@ run-name: Deploy dev on push
|
|||||||
on:
|
on:
|
||||||
push:
|
push:
|
||||||
branches:
|
branches:
|
||||||
- support
|
- dev
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
on-push-deploy_sh-edraft:
|
on-push-deploy_sh-edraft:
|
@@ -5,7 +5,7 @@ volumes:
|
|||||||
|
|
||||||
services:
|
services:
|
||||||
kdb_bot_staging_1:
|
kdb_bot_staging_1:
|
||||||
image: sh-edraft.de/kdb-bot:1.1.7
|
image: sh-edraft.de/kdb-bot:1.1.8
|
||||||
container_name: kdb_bot_staging_1
|
container_name: kdb_bot_staging_1
|
||||||
depends_on:
|
depends_on:
|
||||||
- kdb_db_staging_1
|
- kdb_db_staging_1
|
||||||
@@ -32,7 +32,7 @@ services:
|
|||||||
memory: 1024M
|
memory: 1024M
|
||||||
|
|
||||||
kdb_web_staging_1:
|
kdb_web_staging_1:
|
||||||
image: sh-edraft.de/kdb-web:1.1.7
|
image: sh-edraft.de/kdb-web:1.1.8
|
||||||
container_name: kdb_web_staging_1
|
container_name: kdb_web_staging_1
|
||||||
depends_on:
|
depends_on:
|
||||||
- kdb_bot_staging_1
|
- kdb_bot_staging_1
|
||||||
|
@@ -5,7 +5,7 @@ volumes:
|
|||||||
|
|
||||||
services:
|
services:
|
||||||
kdb_bot_prod_1:
|
kdb_bot_prod_1:
|
||||||
image: sh-edraft.de/kdb-bot:1.1.7
|
image: sh-edraft.de/kdb-bot:1.1.8
|
||||||
depends_on:
|
depends_on:
|
||||||
- kdb_db_prod_1
|
- kdb_db_prod_1
|
||||||
networks:
|
networks:
|
||||||
@@ -30,7 +30,7 @@ services:
|
|||||||
memory: 1024M
|
memory: 1024M
|
||||||
|
|
||||||
kdb_web_prod_1:
|
kdb_web_prod_1:
|
||||||
image: sh-edraft.de/kdb-web:1.1.7
|
image: sh-edraft.de/kdb-web:1.1.8
|
||||||
depends_on:
|
depends_on:
|
||||||
- kdb_bot_prod_1
|
- kdb_bot_prod_1
|
||||||
networks:
|
networks:
|
||||||
|
@@ -79,6 +79,14 @@ class QueryABC(ObjectType):
|
|||||||
permissions: PermissionService = services.get_service(PermissionService)
|
permissions: PermissionService = services.get_service(PermissionService)
|
||||||
bot: DiscordBotServiceABC = services.get_service(DiscordBotServiceABC)
|
bot: DiscordBotServiceABC = services.get_service(DiscordBotServiceABC)
|
||||||
|
|
||||||
|
if user.auth_role == AuthRoleEnum.admin:
|
||||||
|
return True
|
||||||
|
|
||||||
|
for u in user.users:
|
||||||
|
guild = bot.get_guild(u.server.discord_id)
|
||||||
|
if permissions.is_member_technician(guild.get_member(u.discord_id)):
|
||||||
|
return True
|
||||||
|
|
||||||
access = False
|
access = False
|
||||||
if type(element) == Achievement:
|
if type(element) == Achievement:
|
||||||
element: Achievement = element
|
element: Achievement = element
|
||||||
|
@@ -220,7 +220,7 @@ class AutoRoleGroup(DiscordCommandABC):
|
|||||||
) -> TList[app_commands.Choice[str]]:
|
) -> TList[app_commands.Choice[str]]:
|
||||||
return await self._auto_role_auto_complete(interaction, current)
|
return await self._auto_role_auto_complete(interaction, current)
|
||||||
|
|
||||||
@auto_role.command("react")
|
@auto_role.command()
|
||||||
@commands.guild_only()
|
@commands.guild_only()
|
||||||
@CommandChecks.check_is_ready()
|
@CommandChecks.check_is_ready()
|
||||||
@CommandChecks.check_is_member_moderator()
|
@CommandChecks.check_is_member_moderator()
|
||||||
@@ -244,11 +244,9 @@ class AutoRoleGroup(DiscordCommandABC):
|
|||||||
return
|
return
|
||||||
|
|
||||||
for rule in self._auto_roles.get_auto_role_rules_by_auto_role_id(auto_role_from_db.id):
|
for rule in self._auto_roles.get_auto_role_rules_by_auto_role_id(auto_role_from_db.id):
|
||||||
self._bot.loop.create_task(
|
|
||||||
await self._client_utils.react_to_message_by_auto_role_rule(
|
await self._client_utils.react_to_message_by_auto_role_rule(
|
||||||
auto_role_from_db.discord_channel_id, auto_role_from_db.discord_message_id, rule, ctx.guild
|
auto_role_from_db.discord_channel_id, auto_role_from_db.discord_message_id, rule, ctx.guild
|
||||||
)
|
)
|
||||||
)
|
|
||||||
|
|
||||||
await self._message_service.send_ctx_msg(
|
await self._message_service.send_ctx_msg(
|
||||||
ctx,
|
ctx,
|
||||||
@@ -256,7 +254,7 @@ class AutoRoleGroup(DiscordCommandABC):
|
|||||||
)
|
)
|
||||||
self._logger.trace(__name__, f"Finished command auto-role react")
|
self._logger.trace(__name__, f"Finished command auto-role react")
|
||||||
|
|
||||||
@remove.autocomplete("auto_role")
|
@react.autocomplete("auto_role")
|
||||||
async def react_autocomplete(
|
async def react_autocomplete(
|
||||||
self, interaction: discord.Interaction, current: str
|
self, interaction: discord.Interaction, current: str
|
||||||
) -> TList[app_commands.Choice[str]]:
|
) -> TList[app_commands.Choice[str]]:
|
||||||
|
@@ -17,6 +17,7 @@ from bot_data.abc.server_repository_abc import ServerRepositoryABC
|
|||||||
from bot_data.abc.user_joined_server_repository_abc import UserJoinedServerRepositoryABC
|
from bot_data.abc.user_joined_server_repository_abc import UserJoinedServerRepositoryABC
|
||||||
from bot_data.abc.user_repository_abc import UserRepositoryABC
|
from bot_data.abc.user_repository_abc import UserRepositoryABC
|
||||||
from bot_data.model.known_user import KnownUser
|
from bot_data.model.known_user import KnownUser
|
||||||
|
from bot_data.model.server_config import ServerConfig
|
||||||
from bot_data.model.user import User
|
from bot_data.model.user import User
|
||||||
from bot_data.model.user_joined_server import UserJoinedServer
|
from bot_data.model.user_joined_server import UserJoinedServer
|
||||||
from modules.permission.abc.permission_service_abc import PermissionServiceABC
|
from modules.permission.abc.permission_service_abc import PermissionServiceABC
|
||||||
@@ -72,18 +73,6 @@ class BaseOnMemberJoinEvent(OnMemberJoinABC):
|
|||||||
member,
|
member,
|
||||||
)
|
)
|
||||||
|
|
||||||
for admin in self._permission_service.get_admins(member.guild.id):
|
|
||||||
await self._messenger.send_dm_message(
|
|
||||||
self._t.transform("modules.base.welcome_message_for_team").format(member.mention),
|
|
||||||
admin,
|
|
||||||
)
|
|
||||||
|
|
||||||
for moderator in self._permission_service.get_moderators(member.guild.id):
|
|
||||||
await self._messenger.send_dm_message(
|
|
||||||
self._t.transform("modules.base.welcome_message_for_team").format(member.mention),
|
|
||||||
moderator,
|
|
||||||
)
|
|
||||||
|
|
||||||
try:
|
try:
|
||||||
server = self._servers.get_server_by_discord_id(member.guild.id)
|
server = self._servers.get_server_by_discord_id(member.guild.id)
|
||||||
user = self._users.find_user_by_discord_id_and_server_id(member.id, server.id)
|
user = self._users.find_user_by_discord_id_and_server_id(member.id, server.id)
|
||||||
@@ -101,9 +90,21 @@ class BaseOnMemberJoinEvent(OnMemberJoinABC):
|
|||||||
except Exception as e:
|
except Exception as e:
|
||||||
self._logger.error(__name__, f"Cannot get user {member.id}", e)
|
self._logger.error(__name__, f"Cannot get user {member.id}", e)
|
||||||
|
|
||||||
|
async def _notify_team(self, member: discord.Member):
|
||||||
|
self._logger.debug(__name__, f"Notify team that a member left")
|
||||||
|
settings: ServerConfig = self._config.get_configuration(f"ServerConfig_{member.guild.id}")
|
||||||
|
channel = member.guild.get_channel(settings.team_channel_id)
|
||||||
|
await self._messenger.send_channel_message(
|
||||||
|
channel,
|
||||||
|
self._t.transform("modules.base.welcome_message_for_team").format(member.mention),
|
||||||
|
is_persistent=True,
|
||||||
|
)
|
||||||
|
self._logger.trace(__name__, f"Notified team that a member left")
|
||||||
|
|
||||||
@EventChecks.check_is_ready()
|
@EventChecks.check_is_ready()
|
||||||
async def on_member_join(self, member: discord.Member):
|
async def on_member_join(self, member: discord.Member):
|
||||||
self._logger.debug(__name__, f"Module {type(self)} started")
|
self._logger.debug(__name__, f"Module {type(self)} started")
|
||||||
await self._client_utils.check_default_role(member)
|
await self._client_utils.check_default_role(member)
|
||||||
self._check_for_known_user(member)
|
self._check_for_known_user(member)
|
||||||
await self._add_if_not_exists_user_async(member)
|
await self._add_if_not_exists_user_async(member)
|
||||||
|
await self._notify_team(member)
|
||||||
|
@@ -19,6 +19,7 @@ from bot_data.abc.user_repository_abc import UserRepositoryABC
|
|||||||
from bot_data.model.server_config import ServerConfig
|
from bot_data.model.server_config import ServerConfig
|
||||||
from bot_data.model.technician_config import TechnicianConfig
|
from bot_data.model.technician_config import TechnicianConfig
|
||||||
from bot_data.model.user import User
|
from bot_data.model.user import User
|
||||||
|
from modules.level.service.level_service import LevelService
|
||||||
from modules.permission.abc.permission_service_abc import PermissionServiceABC
|
from modules.permission.abc.permission_service_abc import PermissionServiceABC
|
||||||
|
|
||||||
|
|
||||||
@@ -36,6 +37,7 @@ class SyncXpGroup(DiscordCommandABC):
|
|||||||
permissions: PermissionServiceABC,
|
permissions: PermissionServiceABC,
|
||||||
settings: TechnicianConfig,
|
settings: TechnicianConfig,
|
||||||
db: DatabaseContextABC,
|
db: DatabaseContextABC,
|
||||||
|
level_service: LevelService,
|
||||||
):
|
):
|
||||||
DiscordCommandABC.__init__(self)
|
DiscordCommandABC.__init__(self)
|
||||||
|
|
||||||
@@ -50,6 +52,7 @@ class SyncXpGroup(DiscordCommandABC):
|
|||||||
self._permissions = permissions
|
self._permissions = permissions
|
||||||
self._settings = settings
|
self._settings = settings
|
||||||
self._db = db
|
self._db = db
|
||||||
|
self._level_service = level_service
|
||||||
|
|
||||||
self._logger.trace(__name__, f"Loaded command service: {type(self).__name__}")
|
self._logger.trace(__name__, f"Loaded command service: {type(self).__name__}")
|
||||||
|
|
||||||
@@ -93,6 +96,7 @@ class SyncXpGroup(DiscordCommandABC):
|
|||||||
user.xp = user_on_other_server.xp
|
user.xp = user_on_other_server.xp
|
||||||
self._users.update_user(user)
|
self._users.update_user(user)
|
||||||
self._db.save_changes()
|
self._db.save_changes()
|
||||||
|
await self._level_service.check_level(ctx.guild.get_member(user.discord_id))
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
self._logger.error(__name__, f"Cannot sync user {user.name}", e)
|
self._logger.error(__name__, f"Cannot sync user {user.name}", e)
|
||||||
|
|
||||||
@@ -144,6 +148,7 @@ class SyncXpGroup(DiscordCommandABC):
|
|||||||
self._logger.error(__name__, f"Cannot sync user {user.name}", e)
|
self._logger.error(__name__, f"Cannot sync user {user.name}", e)
|
||||||
|
|
||||||
await self._message_service.send_ctx_msg(ctx, self._t.transform("modules.technician.synced_message"))
|
await self._message_service.send_ctx_msg(ctx, self._t.transform("modules.technician.synced_message"))
|
||||||
|
await self._level_service.check_level(member)
|
||||||
self._logger.trace(__name__, f"Finished sync xp command")
|
self._logger.trace(__name__, f"Finished sync xp command")
|
||||||
|
|
||||||
@by_member.autocomplete("server_id")
|
@by_member.autocomplete("server_id")
|
||||||
|
Reference in New Issue
Block a user