Added user set command #22 #143
2 Participants
Notifications
Due Date
No due date set.
Blocks
#144 Added user remove command #23
sh-edraft.de/sh_discord_bot
Reference: sh-edraft.de/sh_discord_bot#143
Reference in New Issue
Block a user
No description provided.
Delete Branch "#22"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
#22
@@ -170,0 +199,4 @@
self._db.save_changes()
await self._level.check_level(member)
except Exception as e:
self._logger.error(__name__, f'Value couldn\'t be converted to int', e)
Relativ ungenau. Entweder änderst du die beschreibung von dem error oder du machst zwei try except blöcke, einmal für den type cast und dann für die manipulation des users inkl. level check
Das Exceptionhandling für das "check_level" würde ich lieber dann in der Methode selber machen und das in einem separaten Issue, da ich dafür weitere Exceptionklassen erstellen möchte, um Exceptions in der Methode besser von den allgemeinen Databaseexceptions zu differenzieren.
@@ -170,0 +215,4 @@
@set.autocomplete('atr')
async def set_autocomplete(self, interaction: discord.Interaction, current: str) -> List[app_commands.Choice[str]]:
atr_list = ['xp']
Es wäre ne idee, dass diese strings irgendwie aus translation oder config kommen. Also das man da halt ne liste von diesen Strings hat. Ist auch diesen drei Befehlen immer der Fall
@@ -145,3 +160,3 @@
match atr:
case 'xp':
case self._atr_class.xp:
Mach das bitte mit nem elif und als dict in der Klasse und keine weitere Klasse dafür einführen
https://stackoverflow.com/questions/72638083/python-match-case-dictionary-keys
Match-Case-Statement gegen If-Else-Statement getauscht
@@ -169,0 +211,4 @@
self._logger.error(__name__, f'String value couldn\'t be converted to int', te)
await self._message_service.send_interaction_msg(ctx.interaction, self._t.transform('modules.base.user.set.error.type_error'))
return
except DatabaseError as de:
Der ist bei weitem unnötig xD
Wenn wir mal in check_level reinschauen sehen wir, dass dort alle Fehler abefangen werden.
Des Weiteren ist DatabaseError um das update_user abzufangen ungenau bzw als solches auch nicht ötig.
Errorhandling entfernt. Nur TypeError wird behandelt.
@@ -169,0 +216,4 @@
await self._message_service.send_interaction_msg(ctx.interaction, self._t.transform('modules.base.user.set.error.database_error'))
return
except Exception as e:
self._logger.error(__name__, f'An error occurred while setting xp', e)
DieseBlock ist wegen command error handling an und für auch nicht nötig. Hier könnte man wenn man wollte die Datenbankfehler abfangen