Verwarnungssystem #35 #235
@ -4,7 +4,6 @@ from cpl_core.database.context import DatabaseContextABC
|
||||
from cpl_query.extension import List
|
||||
|
||||
from bot_core.logging.database_logger import DatabaseLogger
|
||||
from bot_data.abc.server_repository_abc import ServerRepositoryABC
|
||||
from bot_data.abc.user_repository_abc import UserRepositoryABC
|
||||
from bot_data.abc.user_warnings_repository_abc import UserWarningsRepositoryABC
|
||||
from bot_data.model.user_warnings import UserWarnings
|
||||
@ -16,7 +15,6 @@ class UserWarningsRepositoryService(UserWarningsRepositoryABC):
|
||||
logger: DatabaseLogger,
|
||||
db_context: DatabaseContextABC,
|
||||
users: UserRepositoryABC,
|
||||
servers: ServerRepositoryABC,
|
||||
):
|
||||
self._logger = logger
|
||||
edraft marked this conversation as resolved
Outdated
|
||||
self._context = db_context
|
||||
|
@ -371,12 +371,13 @@ class UserGroup(DiscordCommandABC):
|
||||
title=member.name, description=self._t.transform("modules.base.user.atr.warnings"), color=int("ef9d0d", 16)
|
||||
)
|
||||
|
||||
warnings = self._user_warnings.get_user_warnings_by_user_id(user.id)
|
||||
edraft marked this conversation as resolved
Outdated
Ebola-Chan
commented
Evtl. die Zugriffe auf die Datenbank hier verringern, in dem das Ergebnis in einer Variable zwischengespeichert wird. Von:
Zu:
Auch wenn unwahrscheinlich, aber ich meine dass dadurch auch eine zwischenzeitliche Änderung in der Datenbank keine Auswirkung auf die Formatierung des Embeds hat. Evtl. die Zugriffe auf die Datenbank hier verringern, in dem das Ergebnis in einer Variable zwischengespeichert wird.
Von:
```python
warnings_id_string = ""
for warning in self._user_warnings.get_user_warnings_by_user_id(user.id):
warnings_id_string += f"{warning.id}\n"
warnings_description_string = ""
for warning in self._user_warnings.get_user_warnings_by_user_id(user.id):
warnings_description_string += f"{warning.description}\n"
```
Zu:
```python
warnings = self._user_warnings.get_user_warnings_by_user_id(user.id)
warnings_id_string = ""
for warning in warnings:
warnings_id_string += f"{warning.id}\n"
warnings_description_string = ""
for warning in warnings:
warnings_description_string += f"{warning.description}\n"
```
Auch wenn unwahrscheinlich, aber ich meine dass dadurch auch eine zwischenzeitliche Änderung in der Datenbank keine Auswirkung auf die Formatierung des Embeds hat.
|
||||
warnings_id_string = ""
|
||||
for warning in self._user_warnings.get_user_warnings_by_user_id(user.id):
|
||||
for warning in warnings:
|
||||
warnings_id_string += f"{warning.id}\n"
|
||||
|
||||
warnings_description_string = ""
|
||||
for warning in self._user_warnings.get_user_warnings_by_user_id(user.id):
|
||||
for warning in warnings:
|
||||
warnings_description_string += f"{warning.description}\n"
|
||||
|
||||
embed.add_field(
|
||||
@ -399,8 +400,8 @@ class UserGroup(DiscordCommandABC):
|
||||
async def add(self, ctx: Context, member: discord.Member, description: str):
|
||||
self._logger.debug(__name__, f"Received command user warning add {ctx}:{member},{description}")
|
||||
try:
|
||||
edraft marked this conversation as resolved
Ebola-Chan
commented
Hier wird zuerst eine Message gesendet bevor versucht wird eine Warnung hinzuzufügen.
Hier wird zuerst eine Message gesendet bevor versucht wird eine Warnung hinzuzufügen.
Bitte die beiden Zeilen tauschen:
```python
await self._message_service.send_ctx_msg(ctx, self._t.transform("modules.base.warnings.add.success"))
await self._user_warnings_service.add_warnings(member, description, ctx.author.id)
```
|
||||
await self._message_service.send_ctx_msg(ctx, self._t.transform("modules.base.warnings.add.success"))
|
||||
await self._user_warnings_service.add_warnings(member, description, ctx.author.id)
|
||||
await self._message_service.send_ctx_msg(ctx, self._t.transform("modules.base.warnings.add.success"))
|
||||
except Exception as e:
|
||||
self._logger.error(__name__, f"Adding user warning failed", e)
|
||||
await self._message_service.send_ctx_msg(ctx, self._t.transform("modules.base.warnings.add.failed"))
|
||||
@ -413,8 +414,8 @@ class UserGroup(DiscordCommandABC):
|
||||
async def remove(self, ctx: Context, warning_id: int):
|
||||
self._logger.debug(__name__, f"Received command user warning remove {ctx}:{warning_id}")
|
||||
try:
|
||||
edraft marked this conversation as resolved
Ebola-Chan
commented
Auch hier wird zuerst eine Nachricht versendet, bevor die eine Aktion stattfindet. Auch hier die beiden Zeilen tauschen. Auch hier wird zuerst eine Nachricht versendet, bevor die eine Aktion stattfindet. Auch hier die beiden Zeilen tauschen.
|
||||
await self._message_service.send_ctx_msg(ctx, self._t.transform("modules.base.warnings.remove.success"))
|
||||
await self._user_warnings_service.remove_warnings(warning_id)
|
||||
await self._message_service.send_ctx_msg(ctx, self._t.transform("modules.base.warnings.remove.success"))
|
||||
except Exception as e:
|
||||
self._logger.error(__name__, f"Removing user warning failed", e)
|
||||
await self._message_service.send_ctx_msg(ctx, self._t.transform("modules.base.warnings.remove.failed"))
|
||||
|
@ -57,13 +57,14 @@ class UserWarningsService:
|
||||
else:
|
||||
translation = self._t.transform("modules.base.warnings.team_warned").format(member.mention, description)
|
||||
|
||||
await self._message_service.send_channel_message(channel, translation)
|
||||
self._bot.loop.create_task(self._message_service.send_channel_message(channel, translation))
|
||||
except Exception as e:
|
||||
self._logger.error(__name__, f"Team notification for user warning failed!", e)
|
||||
|
||||
async def notify_user(self, member: discord.Member, message: str):
|
||||
try:
|
||||
await self._message_service.send_dm_message(message, member)
|
||||
# run as task to keep the interaction alive
|
||||
self._bot.loop.create_task(self._message_service.send_dm_message(message, member))
|
||||
except Exception as e:
|
||||
self._logger.error(__name__, f"User notification for user warning failed!", e)
|
||||
|
||||
@ -71,7 +72,7 @@ class UserWarningsService:
|
||||
existing_warnings = self._warnings.get_user_warnings_by_user_id(user.id)
|
||||
|
||||
if existing_warnings.count() == 1:
|
||||
await self._message_service.send_dm_message(self._t.transform("modules.base.warnings.first"), member)
|
||||
await self.notify_user(member, self._t.transform("modules.base.warnings.first"))
|
||||
|
||||
elif existing_warnings.count() == 2:
|
||||
server = self._servers.get_server_by_discord_id(member.guild.id)
|
||||
@ -84,7 +85,7 @@ class UserWarningsService:
|
||||
user.xp = new_level.min_xp
|
||||
self._users.update_user(user)
|
||||
self._db.save_changes()
|
||||
await self._message_service.send_dm_message(self._t.transform("modules.base.warnings.second"), member)
|
||||
await self.notify_user(member, self._t.transform("modules.base.warnings.second"))
|
||||
|
||||
elif existing_warnings.count() == 3:
|
||||
server = self._servers.get_server_by_discord_id(member.guild.id)
|
||||
@ -96,7 +97,7 @@ class UserWarningsService:
|
||||
user.xp = new_level.min_xp
|
||||
self._users.update_user(user)
|
||||
self._db.save_changes()
|
||||
await self._message_service.send_dm_message(self._t.transform("modules.base.warnings.third"), member)
|
||||
await self.notify_user(member, self._t.transform("modules.base.warnings.third"))
|
||||
|
||||
elif existing_warnings.count() >= 4:
|
||||
user.xp = 0
|
||||
|
Loading…
Reference in New Issue
Block a user
Du übergibst
servers: ServerRepositoryABC
aber dies wird in der Definition von des Constructors nirgendswo zugewiesen.Ich sehe auch nicht dass
self._servers
in der Klasse irgendwo verwendet wird. Somit könnte der Parameter weg.