From a6fac3ed02b5c91ad4dca6e047d3a98e944beb02 Mon Sep 17 00:00:00 2001
From: jmb-oddbook <oddbook@posteo.net>
Date: Tue, 9 Aug 2022 20:26:40 +0200
Subject: [PATCH 1/7] Renamed 'Owner' in Lg-module, resolved typos

---
 cogs/learninggroups.py | 48 +++++++++++++++++++++---------------------
 1 file changed, 24 insertions(+), 24 deletions(-)

diff --git a/cogs/learninggroups.py b/cogs/learninggroups.py
index 21dbd55..10f7b68 100644
--- a/cogs/learninggroups.py
+++ b/cogs/learninggroups.py
@@ -331,9 +331,9 @@ class LearningGroups(commands.Cog):
                            "und jeder kann darin schreiben. Eine private Lerngruppe ist unsichtbar und auf eine "
                            "Gruppe an Kommilitoninnen beschränkt."
                            "```"
-                           "Besitzerinfunktionen:\n"
+                           "Funktionen für Gruppenorganisatorinnen:\n"
                            "!lg addmember <@newmember>: Fügt ein Mitglied zur Lerngruppe hinzu.\n"                           
-                           "!lg owner <@newowner>: Ändert die Besitzerin der Lerngruppe auf @newowner.\n"
+                           "!lg owner <@newowner>: Ändert die Organisatorin der Lerngruppe auf @newowner.\n"
                            "!lg open: Öffnet eine Lerngruppe.\n"
                            "!lg close: Schließt eine Lerngruppe.\n"
                            "!lg private: Stellt die Lerngruppe auf privat.\n"
@@ -343,7 +343,7 @@ class LearningGroups(commands.Cog):
                            "\nKommandos für alle:\n"
                            "!lg id: Zeigt die ID der Lerngruppe an mit der andere Kommilitoninnen beitreten können.\n"
                            "!lg members: Zeigt die Mitglieder der Lerngruppe an.\n"
-                           "!lg owner: Zeigt die Besitzerin der Lerngruppe.\n"
+                           "!lg owner: Zeigt die Organisatorin der Lerngruppe an.\n"
                            "!lg leave: Du verlässt die Lerngruppe.\n"
                            "!lg join: Anfrage stellen in die Lerngruppe aufgenommen zu werden.\n"
                            "\nMit dem nachfolgenden Kommando kann eine Kommilitonin darum "
@@ -520,7 +520,7 @@ class LearningGroups(commands.Cog):
             "name...": "Ein frei wählbarer Text (darf Leerzeichen enthalten).",
         },
         description="Kann auch zum Bearbeiten einer Überschrift genutzt werden. Bei bereits existierender "
-                    "Kursnummer wird die Überschrift abgeändert",
+                    "Kursnummer wird die Überschrift abgeändert.",
         mod=True
     )
     @cmd_lg.command(name="header")
@@ -547,7 +547,7 @@ class LearningGroups(commands.Cog):
             "semester": ("Das Semester, für welches diese Lerngruppe erstellt werden soll."
                          "sose oder wise gefolgt von der zweistelligen Jahreszahl (z. B. sose22)."),
             "status": "Gibt an ob die Lerngruppe für weitere Lernwillige geöffnet ist (open) oder nicht (closed).",
-            "@usermention": "Die so erwähnte Benutzerin wird als Besitzerin für die Lerngruppe gesetzt."
+            "@usermention": "Die so erwähnte Benutzerin wird als Organisatorin der Lerngruppe eingesetzt."
         },
         mod=True
     )
@@ -572,7 +572,7 @@ class LearningGroups(commands.Cog):
         brief="Stellt eine Anfrage für einen neuen Lerngruppen-Kanal.",
         example="!lg request 1142 mathegenies sose22 closed",
         description=("Moderatorinnen können diese Anfrage bestätigen, dann wird die Gruppe eingerichtet. "
-                     "Die Besitzerin der Gruppe ist die Benutzerin die die Anfrage eingestellt hat."),
+                     "Die Organisatorin der Gruppe ist die Benutzerin die die Anfrage eingestellt hat."),
         parameters={
             "coursenumber": "Nummer des Kurses, wie von der FernUni angegeben (ohne führende Nullen z. B. 1142).",
             "name": "Ein frei wählbarer Text ohne Leerzeichen.",
@@ -638,7 +638,7 @@ class LearningGroups(commands.Cog):
         description=("Muss im betreffenden Lerngruppen-Kanal ausgeführt werden. "
                      "Die Lerngruppe wird in der Übersicht der Lerngruppen gelistet, so können Kommilitoninnen noch "
                      "Anfragen stellen, um in die Lerngruppe aufgenommen zu werden."
-                     "Diese Aktion kann nur von der Besitzerin der Lerngruppe ausgeführt werden. ")
+                     "Diese Aktion kann nur von der Organisatorin der Lerngruppe ausgeführt werden. ")
     )
     @cmd_lg.command(name="show")
     async def cmd_show(self, ctx):
@@ -661,7 +661,7 @@ class LearningGroups(commands.Cog):
         brief="Versteckt einen privaten Lerngruppenkanal. ",
         description=("Muss im betreffenden Lerngruppen-Kanal ausgeführt werden. "
                      "Die Lerngruppe wird nicht mehr in der Liste der Lerngruppen aufgeführt. "
-                     "Diese Aktion kann nur von der Besitzerin der Lerngruppe ausgeführt werden. ")
+                     "Diese Aktion kann nur von der Organisatorin der Lerngruppe ausgeführt werden. ")
     )
     @cmd_lg.command(name="hide")
     async def cmd_hide(self, ctx):
@@ -695,10 +695,10 @@ class LearningGroups(commands.Cog):
         command_group="lg",
         category="learninggroups",
         syntax="!lg open",
-        brief="Öffnet den Lerngruppen-Kanal wenn du die Besitzerin bist. ",
+        brief="Öffnet den Lerngruppen-Kanal wenn du die Organisatorin dafür bist. ",
         description=("Muss im betreffenden Lerngruppen-Kanal ausgeführt werden. "
                      "Verschiebt den Lerngruppen-Kanal in die Kategorie für offene Kanäle und ändert das Icon. "
-                     "Diese Aktion kann nur von der Besitzerin der Lerngruppe ausgeführt werden. ")
+                     "Diese Aktion kann nur von der Organisatorin der Lerngruppe ausgeführt werden. ")
     )
     @cmd_lg.command(name="open", aliases=["opened", "offen"])
     async def cmd_open(self, ctx):
@@ -709,11 +709,11 @@ class LearningGroups(commands.Cog):
         command_group="lg",
         category="learninggroups",
         syntax="!lg close",
-        brief="Schließt den Lerngruppen-Kanal wenn du die Besitzerin bist. ",
+        brief="Schließt den Lerngruppen-Kanal wenn du die Organisatorin dafür bist. ",
         description=("Muss im betreffenden Lerngruppen-Kanal ausgeführt werden. "
                      "Stellt die Lerngruppe auf geschlossen. Dies ist rein symbolisch und zeigt an, "
                      "dass keine neuen Mitglieder mehr aufgenommen werden. "
-                     "Diese Aktion kann nur von der Besitzerin der Lerngruppe ausgeführt werden. ")
+                     "Diese Aktion kann nur von der Organisatorin der Lerngruppe ausgeführt werden. ")
     )
     @cmd_lg.command(name="close", aliases=["closed", "geschlossen"])
     async def cmd_close(self, ctx):
@@ -724,11 +724,11 @@ class LearningGroups(commands.Cog):
         command_group="lg",
         category="learninggroups",
         syntax="!lg private",
-        brief="Macht aus deiner Lerngruppe eine private Lerngruppe wenn du die Besitzerin bist. ",
+        brief="Macht aus deiner Lerngruppe eine private Lerngruppe wenn du die Organisatorin dafür bist. ",
         description=("Muss im betreffenden Lerngruppen-Kanal ausgeführt werden. "
                      "Stellt die Lerngruppe auf privat. Es haben nur noch Mitglieder "
                      "der Lerngruppe zugriff auf den Kanal. (siehe `!lg members`)"
-                     "Diese Aktion kann nur von der Besitzerin der Lerngruppe ausgeführt werden. ")
+                     "Diese Aktion kann nur von der Organisatorin der Lerngruppe ausgeführt werden. ")
     )
     @cmd_lg.command(name="private", aliases=["privat"])
     async def cmd_private(self, ctx):
@@ -742,7 +742,7 @@ class LearningGroups(commands.Cog):
         command_group="lg",
         category="learninggroups",
         syntax="!lg rename <name>",
-        brief="Ändert den Namen des Lerngruppen-Kanals, in dem das Komando ausgeführt wird.",
+        brief="Ändert den Namen des Lerngruppen-Kanals, in dem das Kommando ausgeführt wird.",
         example="!lg rename matheluschen",
         description="Aus #1142-matheprofis-sose22 wird nach dem Aufruf des Beispiels #1142-matheluschen-sose22.",
         parameters={
@@ -759,7 +759,7 @@ class LearningGroups(commands.Cog):
         command_group="lg",
         syntax="!lg archive",
         category="learninggroups",
-        brief="Archiviert den Lerngruppen-Kanal",
+        brief="Archiviert den Lerngruppen-Kanal.",
         description="Verschiebt den Lerngruppen-Kanal, in welchem dieses Kommando ausgeführt wird, ins Archiv.",
         mod=True
     )
@@ -773,10 +773,10 @@ class LearningGroups(commands.Cog):
         category="learninggroups",
         syntax="!lg owner <@usermention>",
         example="!owner @someuser",
-        brief="Setzt die Besitzerin eines Lerngruppen-Kanals",
+        brief="Setzt die Organisatorin eines Lerngruppen-Kanals.",
         description="Muss im betreffenden Lerngruppen-Kanal ausgeführt werden. ",
         parameters={
-            "@usermention": "Die neue Besitzerin der Lerngruppe."
+            "@usermention": "Die neue Organisatorin der Lerngruppe."
         }
     )
     @cmd_lg.command(name="owner")
@@ -794,7 +794,7 @@ class LearningGroups(commands.Cog):
 
         if not new_owner:
                 user = await self.bot.fetch_user(owner_id)
-                await ctx.channel.send(f"Besitzerin: @{user.name}#{user.discriminator}")
+                await ctx.channel.send(f"Organisatorin: @{user.name}#{user.discriminator}")
 
         elif isinstance(group_config, dict):
             owner = await self.bot.fetch_user(owner_id)
@@ -806,7 +806,7 @@ class LearningGroups(commands.Cog):
                 await self.save_groups()
                 await self.update_permissions(ctx.channel)
                 await ctx.channel.send(
-                    f"Glückwunsch {new_owner.mention}! Du bist jetzt die Besitzerin dieser Lerngruppe.")
+                    f"Glückwunsch {new_owner.mention}! Du bist jetzt die Organisatorin für diese Lerngruppe.")
 
     @help(
         command_group="lg",
@@ -878,7 +878,7 @@ class LearningGroups(commands.Cog):
             user = await self.bot.fetch_user(user_id)
             names.append("@" + user.name + "#" + user.discriminator)
 
-        await ctx.channel.send(f"Besitzerin: **@{owner.name}#{owner.discriminator}**\nMitglieder: " +
+        await ctx.channel.send(f"Organisatorin: **@{owner.name}#{owner.discriminator}**\nMitglieder: " +
                                (f"{', '.join(names)}" if len(names) > 0 else "Keine"))
 
     @help(
@@ -901,7 +901,7 @@ class LearningGroups(commands.Cog):
         command_group="lg",
         category="learninggroups",
         syntax="!lg join <lg-id>",
-        brief="Fragt bei der Besitzerin einer Lerngruppe um Aufnahme.",
+        brief="Fragt bei der Organisatorin einer Lerngruppe um Aufnahme an.",
         parameters={
             "id": "Die ID zur Lerngruppe."
         }
@@ -929,7 +929,7 @@ class LearningGroups(commands.Cog):
             custom_prefix="learninggroups:join"
         )
         await utils.send_dm(ctx.author, f"Deine Anfrage wurde an **#{channel.name}** gesendet. "
-                                        "Sobald die Besitzerin der Lerngruppe darüber "
+                                        "Sobald die Organisatorin der Lerngruppe darüber "
                                         "entschieden hat bekommst du Bescheid.")
 
     @help(
@@ -963,7 +963,7 @@ class LearningGroups(commands.Cog):
             return
 
         if group_config["owner_id"] == ctx.author.id:
-            await ctx.channel.send("Du kannst nicht aus deiner eigenen Lerngruppe flüchten. Übertrage erst den Besitz.")
+            await ctx.channel.send("Du kannst nicht aus deiner eigenen Lerngruppe flüchten. Gib erst die Verantwortung ab.")
             return
 
         await self.remove_member_from_group(ctx.channel, ctx.author)
-- 
GitLab


From 0949d68d063836ac17c8bd65e5410ccc589ee3d6 Mon Sep 17 00:00:00 2001
From: jmb-oddbook <oddbook@posteo.net>
Date: Tue, 9 Aug 2022 20:32:48 +0200
Subject: [PATCH 2/7] Renamed 'Owner' in Lg-module, resolved typos

---
 cogs/learninggroups.py | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/cogs/learninggroups.py b/cogs/learninggroups.py
index 10f7b68..9ffbd1f 100644
--- a/cogs/learninggroups.py
+++ b/cogs/learninggroups.py
@@ -695,7 +695,7 @@ class LearningGroups(commands.Cog):
         command_group="lg",
         category="learninggroups",
         syntax="!lg open",
-        brief="Öffnet den Lerngruppen-Kanal wenn du die Organisatorin dafür bist. ",
+        brief="Öffnet den Lerngruppen-Kanal wenn du die Organisatorin bist. ",
         description=("Muss im betreffenden Lerngruppen-Kanal ausgeführt werden. "
                      "Verschiebt den Lerngruppen-Kanal in die Kategorie für offene Kanäle und ändert das Icon. "
                      "Diese Aktion kann nur von der Organisatorin der Lerngruppe ausgeführt werden. ")
@@ -709,7 +709,7 @@ class LearningGroups(commands.Cog):
         command_group="lg",
         category="learninggroups",
         syntax="!lg close",
-        brief="Schließt den Lerngruppen-Kanal wenn du die Organisatorin dafür bist. ",
+        brief="Schließt den Lerngruppen-Kanal wenn du die Organisatorin bist. ",
         description=("Muss im betreffenden Lerngruppen-Kanal ausgeführt werden. "
                      "Stellt die Lerngruppe auf geschlossen. Dies ist rein symbolisch und zeigt an, "
                      "dass keine neuen Mitglieder mehr aufgenommen werden. "
@@ -724,7 +724,7 @@ class LearningGroups(commands.Cog):
         command_group="lg",
         category="learninggroups",
         syntax="!lg private",
-        brief="Macht aus deiner Lerngruppe eine private Lerngruppe wenn du die Organisatorin dafür bist. ",
+        brief="Macht aus deiner Lerngruppe eine private Lerngruppe wenn du die Organisatorin bist. ",
         description=("Muss im betreffenden Lerngruppen-Kanal ausgeführt werden. "
                      "Stellt die Lerngruppe auf privat. Es haben nur noch Mitglieder "
                      "der Lerngruppe zugriff auf den Kanal. (siehe `!lg members`)"
@@ -806,7 +806,7 @@ class LearningGroups(commands.Cog):
                 await self.save_groups()
                 await self.update_permissions(ctx.channel)
                 await ctx.channel.send(
-                    f"Glückwunsch {new_owner.mention}! Du bist jetzt die Organisatorin für diese Lerngruppe.")
+                    f"Glückwunsch {new_owner.mention}! Du bist jetzt die Organisatorin dieser Lerngruppe.")
 
     @help(
         command_group="lg",
-- 
GitLab


From 58d3cb123bd3389cebda90bd113bac27f9bfb1bf Mon Sep 17 00:00:00 2001
From: jmb-oddbook <oddbook@posteo.net>
Date: Thu, 11 Aug 2022 22:11:59 +0200
Subject: [PATCH 3/7] Anglizismen entfernt

---
 cogs/learninggroups.py | 112 ++++++++++++++++++++---------------------
 1 file changed, 56 insertions(+), 56 deletions(-)

diff --git a/cogs/learninggroups.py b/cogs/learninggroups.py
index 9ffbd1f..8eb187c 100644
--- a/cogs/learninggroups.py
+++ b/cogs/learninggroups.py
@@ -16,14 +16,14 @@ from cogs.help import help, handle_error, help_category
 
 """
   Environment Variablen:
-  DISCORD_LEARNINGGROUPS_OPEN - ID der Kategorie für offene Lerngruppen
-  DISCORD_LEARNINGGROUPS_CLOSE - ID der Kategorie für private Lerngruppen
-  DISCORD_LEARNINGGROUPS_ARCHIVE - ID der Kategorie für archivierte Lerngruppen
-  DISCORD_LEARNINGGROUPS_REQUEST - ID des Channels in welchem Requests vom Bot eingestellt werden
-  DISCORD_LEARNINGGROUPS_INFO - ID des Channels in welchem die Lerngruppen-Informationen gepostet/aktualisert werden
+  DISCORD_LEARNINGGROUPS_OPEN - Kategorie-ID der offenen Lerngruppen
+  DISCORD_LEARNINGGROUPS_CLOSE - Kategorie-ID der privaten Lerngruppen
+  DISCORD_LEARNINGGROUPS_ARCHIVE - Kategorie-ID der archivierten Lerngruppen
+  DISCORD_LEARNINGGROUPS_REQUEST - ID des Kanals, in dem Anfragen, die über den Bot gestellt wurden, eingetragen werden
+  DISCORD_LEARNINGGROUPS_INFO - ID des Kanals, in dem die Lerngruppen-Informationen gepostet/aktualisert werden
   DISCORD_LEARNINGGROUPS_FILE - Name der Datei mit Verwaltungsdaten der Lerngruppen (minimaler Inhalt: {"requested": {},"groups": {}})
-  DISCORD_LEARNINGGROUPS_COURSE_FILE - Name der Datei welche die Kursnamen für die Lerngruppen-Informationen enthält (minimalter Inhalt: {})
-  DISCORD_MOD_ROLE - ID der Moderator Rolle von der erweiterte Lerngruppen-Actionen ausgeführt werden dürfen
+  DISCORD_LEARNINGGROUPS_COURSE_FILE - Name der Datei welche die Kursnamen für die Lerngruppen-Informationen enthält (minimaler Inhalt: {})
+  DISCORD_MOD_ROLE - ID der Moderatorin, die erweiterte Lerngruppen-Aktionen ausführen darf
 """
 
 LG_OPEN_SYMBOL = f'🌲'
@@ -41,8 +41,8 @@ class GroupState(Enum):
 
 
 @help_category("learninggroups", "Lerngruppen",
-               "Mit dem Lerngruppen-Feature kannst du Lerngruppen-Kanäle beantragen und verwalten.",
-               "Hier kannst du Lerngruppen-Kanäle anlegen, beantragen und verwalten.")
+               "Mit dem Lerngruppen-Feature kannst du Lerngruppenkanäle beantragen und verwalten.",
+               "Hier kannst du Lerngruppenkanäle anlegen, beantragen und verwalten.")
 class LearningGroups(commands.Cog):
     def __init__(self, bot):
         self.bot = bot
@@ -68,9 +68,9 @@ class LearningGroups(commands.Cog):
         self.support_channel = os.getenv('DISCORD_SUPPORT_CHANNEL')
         self.mod_role = os.getenv("DISCORD_MOD_ROLE")
         self.guild_id = os.getenv("DISCORD_GUILD")
-        self.groups = {}  # owner and learninggroup-member ids
+        self.groups = {}  # organizer and learninggroup-member ids
         self.channels = {}  # complete channel configs
-        self.header = {}  # headlines for statusmessage
+        self.header = {}  # headlines for status message
         self.load_groups()
         self.load_header()
 
@@ -177,7 +177,7 @@ class LearningGroups(commands.Cog):
         seconds = channel_config["last_rename"] + self.rename_ratelimit - now
         if seconds > 0:
             channel = await self.bot.fetch_channel(int(channel_config["channel_id"]))
-            await channel.send(f"Discord limitiert die Aufrufe für manche Funktionen, daher kannst du diese Aktion erst wieder in {seconds} Sekunden ausführen.")
+            await channel.send(f"Discord schränkt die Anzahl der Aufrufe für manche Funktionen ein, daher kannst du diese Aktion erst wieder in {seconds} Sekunden ausführen.")
         return seconds > 0
 
     async def category_of_channel(self, state: GroupState):
@@ -244,7 +244,7 @@ class LearningGroups(commands.Cog):
         if len(no_headers) > 0:
             support_channel = await self.bot.fetch_channel(int(self.support_channel))
             if support_channel:
-                await support_channel.send(f"Es fehlen noch Überschriften für folgende Kurse in der Lerngruppenübersicht: **{', '.join(no_headers)}**")
+                await support_channel.send(f"In der Lerngruppenübersicht fehlen noch Überschriften für die folgenden Kurse: **{', '.join(no_headers)}**")
         info_message_ids.append(message.id)
         self.groups["messageids"] = info_message_ids
         await self.save_groups()
@@ -270,7 +270,7 @@ class LearningGroups(commands.Cog):
         if state is not None:
             old_state = channel_config["state"]
             if old_state == state:
-                return False  # prevent api requests when nothing changed
+                return False  # prevent api requests when nothing has changed
             channel_config["state"] = state
             await self.alter_channel(channel, channel_config)
             return True
@@ -282,7 +282,7 @@ class LearningGroups(commands.Cog):
         if channel_config["state"] in [GroupState.CLOSED, GroupState.PRIVATE]:
             was_listed = channel_config["is_listed"]
             if was_listed == is_listed:
-                return False  # prevent api requests when nothing changed
+                return False  # prevent api requests when nothing has changed
             channel_config["is_listed"] = is_listed
             await self.alter_channel(channel, channel_config)
             return True
@@ -345,11 +345,11 @@ class LearningGroups(commands.Cog):
                            "!lg members: Zeigt die Mitglieder der Lerngruppe an.\n"
                            "!lg owner: Zeigt die Organisatorin der Lerngruppe an.\n"
                            "!lg leave: Du verlässt die Lerngruppe.\n"
-                           "!lg join: Anfrage stellen in die Lerngruppe aufgenommen zu werden.\n"
+                           "!lg join: Anfrage, um der Lerngruppe beizutreten.\n"
                            "\nMit dem nachfolgenden Kommando kann eine Kommilitonin darum "
-                           "bitten in die Lerngruppe aufgenommen zu werden wenn diese bereits privat ist.\n"
+                           "bitten in die Lerngruppe aufgenommen zu werden wenn die Gruppe privat ist.\n"
                            f"!lg join {channel.id}"
-                            "\n(manche Kommandos sind von Discord limitiert und können nur einmal alle 5 Minuten ausgeführt werden)"
+                            "\n(Manche Kommandos werden Discord eingeschränkt und können nur einmal alle 5 Minuten ausgeführt werden.)"
                            "```"
                            )
         self.groups["groups"][str(channel.id)] = {
@@ -422,9 +422,9 @@ class LearningGroups(commands.Cog):
                 try:
                     await utils.send_dm(user, f"Du wurdest in die Lerngruppe <#{channel.id}> aufgenommen. " 
                                               "Viel Spass beim gemeinsamen Lernen!\n"
-                                              "Dieser Link führt dich direkt zum Lerngruppen-Channel. " 
-                                              "Diese Nachricht kannst du bei Bedarf in unserer Unterhaltung " 
-                                              "über Rechtsklick anpinnen.")
+                                              "Dieser Link führt dich direkt zum Lerngruppenkanal. " 
+                                              "Diese Nachricht kannst du in unserer Unterhaltung mit Rechtsklick anpinnen, " 
+                                              "wenn du möchtest.")
                 except:
                     pass
 
@@ -445,7 +445,7 @@ class LearningGroups(commands.Cog):
         if users.pop(mid, None):
             user = await self.bot.fetch_user(mid)
             if user and send_message:
-                await utils.send_dm(user, f"Du wurdest aus der Lerngruppe {channel.name} entfernt")
+                await utils.send_dm(user, f"Du wurdest aus der Lerngruppe {channel.name} entfernt.")
 
         await self.save_groups()
 
@@ -494,12 +494,12 @@ class LearningGroups(commands.Cog):
     @commands.group(name="lg", aliases=["learninggroup", "lerngruppe"], pass_context=True)
     async def cmd_lg(self, ctx):
         if not ctx.invoked_subcommand:
-            await ctx.channel.send("Gib `!help lg` ein um eine Übersicht über die Lerngruppen-Kommandos zu erhalten.")
+            await ctx.channel.send("Gib `!help lg` ein, um eine Übersicht über die Lerngruppen-Kommandos zu erhalten.")
 
     @help(
         command_group="lg",
         category="learninggroups",
-        brief="Updated die Lerngruppenliste",
+        brief="Aktualisiert die Lerngruppenliste",
         mod=True
     )
     @cmd_lg.command(name="update")
@@ -513,14 +513,14 @@ class LearningGroups(commands.Cog):
         category="learninggroups",
         syntax="!lg header <coursenumber> <name...>",
         brief="Fügt einen Kurs als neue Überschrift in Botys Lerngruppen-Liste (Kanal #lerngruppen) hinzu. "
-              "Darf Leerzeichen enthalten, Anführungszeichen sind nicht erforderlich.",
+              "Der Name darf Leerzeichen enthalten, Anführungszeichen sind nicht erforderlich.",
         example="!lg header 1141 Mathematische Grundlagen",
         parameters={
             "coursenumber": "Nummer des Kurses wie von der Fernuni angegeben (ohne führende Nullen z. B. 1142).",
             "name...": "Ein frei wählbarer Text (darf Leerzeichen enthalten).",
         },
-        description="Kann auch zum Bearbeiten einer Überschrift genutzt werden. Bei bereits existierender "
-                    "Kursnummer wird die Überschrift abgeändert.",
+        description="Kann auch zum Bearbeiten einer Überschrift genutzt werden. Existiert die Kursnummer bereits, "
+                    "wird die Überschrift geändert.",
         mod=True
     )
     @cmd_lg.command(name="header")
@@ -540,7 +540,7 @@ class LearningGroups(commands.Cog):
         category="learninggroups",
         syntax="!lg add <coursenumber> <name> <semester> <status> <@usermention>",
         example="!lg add 1142 mathegenies sose22 closed @someuser",
-        brief="Fügt einen Lerngruppen-Kanal hinzu. Der Name darf keine Leerzeichen enthalten.",
+        brief="Fügt einen Lerngruppenkanal hinzu. Der Name darf keine Leerzeichen enthalten.",
         parameters={
             "coursenumber": "Nummer des Kurses wie von der Fernuni angegeben (ohne führende Nullen z. B. 1142).",
             "name": "Ein frei wählbarer Text ohne Leerzeichen. Bindestriche sind zulässig.",
@@ -569,10 +569,10 @@ class LearningGroups(commands.Cog):
         command_group="lg",
         category="learninggroups",
         syntax="!lg request <coursenumber> <name> <semester> <status>",
-        brief="Stellt eine Anfrage für einen neuen Lerngruppen-Kanal.",
+        brief="Stellt eine Anfrage für einen neuen Lerngruppenkanal.",
         example="!lg request 1142 mathegenies sose22 closed",
         description=("Moderatorinnen können diese Anfrage bestätigen, dann wird die Gruppe eingerichtet. "
-                     "Die Organisatorin der Gruppe ist die Benutzerin die die Anfrage eingestellt hat."),
+                     "Die Organisatorin der Gruppe ist die Benutzerin, die die Anfrage gestellt hat."),
         parameters={
             "coursenumber": "Nummer des Kurses, wie von der FernUni angegeben (ohne führende Nullen z. B. 1142).",
             "name": "Ein frei wählbarer Text ohne Leerzeichen.",
@@ -635,9 +635,9 @@ class LearningGroups(commands.Cog):
         category="learninggroups",
         syntax="!lg show",
         brief="Zeigt einen privaten Lerngruppenkanal trotzdem in der Liste an.",
-        description=("Muss im betreffenden Lerngruppen-Kanal ausgeführt werden. "
-                     "Die Lerngruppe wird in der Übersicht der Lerngruppen gelistet, so können Kommilitoninnen noch "
-                     "Anfragen stellen, um in die Lerngruppe aufgenommen zu werden."
+        description=("Muss im betreffenden Lerngruppenkanal ausgeführt werden. "
+                     "Die Lerngruppe wird in der Übersicht der Lerngruppen aufgeführt, so dass Kommilitoninnen noch "
+                     "anfragen können in die Lerngruppe aufgenommen zu werden."
                      "Diese Aktion kann nur von der Organisatorin der Lerngruppe ausgeführt werden. ")
     )
     @cmd_lg.command(name="show")
@@ -659,8 +659,8 @@ class LearningGroups(commands.Cog):
         category="learninggroups",
         syntax="!lg hide",
         brief="Versteckt einen privaten Lerngruppenkanal. ",
-        description=("Muss im betreffenden Lerngruppen-Kanal ausgeführt werden. "
-                     "Die Lerngruppe wird nicht mehr in der Liste der Lerngruppen aufgeführt. "
+        description=("Muss im betreffenden Lerngruppenkanal ausgeführt werden. "
+                     "Die Lerngruppe wird nicht mehr in der Liste der Lerngruppen angezeigt. "
                      "Diese Aktion kann nur von der Organisatorin der Lerngruppe ausgeführt werden. ")
     )
     @cmd_lg.command(name="hide")
@@ -675,8 +675,8 @@ class LearningGroups(commands.Cog):
 
                 elif channel_config.get("state") == GroupState.OPEN:
                     await ctx.channel.send("Offene Lerngruppen können nicht aus der Lerngruppenliste entfernt werden. " 
-                                           "Führe `!lg close` aus um die Lerngruppe zu schließen, "
-                                           "oder `!lg private` um diese auf "
+                                           "Führe `!lg close` aus, um die Lerngruppe zu schließen, "
+                                           "oder `!lg private`, um diese auf "
                                            "privat zu schalten.")
                 elif channel_config.get("state") == GroupState.CLOSED:
                     await ctx.channel.send("Wenn diese Gruppe privat werden soll, ist das Kommando das du brauchst: `!lg private`")
@@ -695,9 +695,9 @@ class LearningGroups(commands.Cog):
         command_group="lg",
         category="learninggroups",
         syntax="!lg open",
-        brief="Öffnet den Lerngruppen-Kanal wenn du die Organisatorin bist. ",
-        description=("Muss im betreffenden Lerngruppen-Kanal ausgeführt werden. "
-                     "Verschiebt den Lerngruppen-Kanal in die Kategorie für offene Kanäle und ändert das Icon. "
+        brief="Öffnet den Lerngruppenkanal, wenn du die Organisatorin bist. ",
+        description=("Muss im betreffenden Lerngruppenkanal ausgeführt werden. "
+                     "Verschiebt den Lerngruppenkanal in die Kategorie für offene Kanäle und ändert das Icon. "
                      "Diese Aktion kann nur von der Organisatorin der Lerngruppe ausgeführt werden. ")
     )
     @cmd_lg.command(name="open", aliases=["opened", "offen"])
@@ -709,8 +709,8 @@ class LearningGroups(commands.Cog):
         command_group="lg",
         category="learninggroups",
         syntax="!lg close",
-        brief="Schließt den Lerngruppen-Kanal wenn du die Organisatorin bist. ",
-        description=("Muss im betreffenden Lerngruppen-Kanal ausgeführt werden. "
+        brief="Schließt den Lerngruppenkanal, wenn du die Organisatorin bist. ",
+        description=("Muss im betreffenden Lerngruppenkanal ausgeführt werden. "
                      "Stellt die Lerngruppe auf geschlossen. Dies ist rein symbolisch und zeigt an, "
                      "dass keine neuen Mitglieder mehr aufgenommen werden. "
                      "Diese Aktion kann nur von der Organisatorin der Lerngruppe ausgeführt werden. ")
@@ -724,10 +724,10 @@ class LearningGroups(commands.Cog):
         command_group="lg",
         category="learninggroups",
         syntax="!lg private",
-        brief="Macht aus deiner Lerngruppe eine private Lerngruppe wenn du die Organisatorin bist. ",
-        description=("Muss im betreffenden Lerngruppen-Kanal ausgeführt werden. "
+        brief="Macht aus deiner Lerngruppe eine private Lerngruppe, wenn du die Organisatorin bist. ",
+        description=("Muss im betreffenden Lerngruppenkanal ausgeführt werden. "
                      "Stellt die Lerngruppe auf privat. Es haben nur noch Mitglieder "
-                     "der Lerngruppe zugriff auf den Kanal. (siehe `!lg members`)"
+                     "der Lerngruppe Zugriff auf den Kanal. (siehe `!lg members`)"
                      "Diese Aktion kann nur von der Organisatorin der Lerngruppe ausgeführt werden. ")
     )
     @cmd_lg.command(name="private", aliases=["privat"])
@@ -742,7 +742,7 @@ class LearningGroups(commands.Cog):
         command_group="lg",
         category="learninggroups",
         syntax="!lg rename <name>",
-        brief="Ändert den Namen des Lerngruppen-Kanals, in dem das Kommando ausgeführt wird.",
+        brief="Ändert den Namen des Lerngruppenkanals, in dem das Kommando ausgeführt wird.",
         example="!lg rename matheluschen",
         description="Aus #1142-matheprofis-sose22 wird nach dem Aufruf des Beispiels #1142-matheluschen-sose22.",
         parameters={
@@ -759,8 +759,8 @@ class LearningGroups(commands.Cog):
         command_group="lg",
         syntax="!lg archive",
         category="learninggroups",
-        brief="Archiviert den Lerngruppen-Kanal.",
-        description="Verschiebt den Lerngruppen-Kanal, in welchem dieses Kommando ausgeführt wird, ins Archiv.",
+        brief="Archiviert den Lerngruppenkanal.",
+        description="Verschiebt den Lerngruppenkanal, in welchem dieses Kommando ausgeführt wird, ins Archiv.",
         mod=True
     )
     @cmd_lg.command(name="archive", aliases=["archiv"])
@@ -773,8 +773,8 @@ class LearningGroups(commands.Cog):
         category="learninggroups",
         syntax="!lg owner <@usermention>",
         example="!owner @someuser",
-        brief="Setzt die Organisatorin eines Lerngruppen-Kanals.",
-        description="Muss im betreffenden Lerngruppen-Kanal ausgeführt werden. ",
+        brief="Bestimmt die Organisatorin eines Lerngruppenkanals.",
+        description="Muss im betreffenden Lerngruppenkanal ausgeführt werden. ",
         parameters={
             "@usermention": "Die neue Organisatorin der Lerngruppe."
         }
@@ -816,7 +816,7 @@ class LearningGroups(commands.Cog):
         brief="Fügt eine Benutzerin zu einer Lerngruppe hinzu.",
         parameters={
             "@usermention": "Die so erwähnte Benutzerin wird zur Lerngruppe hinzugefügt.",
-            "#channel": "(optional) Der Kanal dem die Benutzerin hinzugefügt werden soll."
+            "#channel": "(optional) Der Kanal, zu dem die Benutzerin hinzugefügt werden soll."
         }
     )
     @cmd_lg.command(name="addmember", aliases=["addm", "am"])
@@ -824,7 +824,7 @@ class LearningGroups(commands.Cog):
         if not arg_channel:
             if not self.channels.get(str(ctx.channel.id)):
                 await ctx.channel.send("Wenn das Kommando außerhalb eines Lerngruppenkanals aufgerufen wird, muss der" 
-                                       "Lerngruppenkanal angehängt werden. `!lg addmember <@usermention> <#channel>`")
+                                       "Lerngruppenkanal angefügt werden. `!lg addmember <@usermention> <#channel>`")
                 return
             arg_channel = ctx.channel
         if self.is_group_owner(arg_channel, ctx.author) or utils.is_mod(ctx):
@@ -838,7 +838,7 @@ class LearningGroups(commands.Cog):
         example="!lg removemember @someuser #1141-mathegl-lerngruppe-sose21",
         brief="Entfernt eine Benutzerin aus einer Lerngruppe.",
         parameters={
-            "#channel": "Der Kanal aus dem die Benutzerin gelöscht werden soll.",
+            "#channel": "Der Kanal, aus dem die Benutzerin gelöscht werden soll.",
             "@usermention": "Die so erwähnte Benutzerin wird aus der Lerngruppe entfernt."
         },
         mod=True
@@ -853,7 +853,7 @@ class LearningGroups(commands.Cog):
         command_group="lg",
         category="learninggroups",
         syntax="!lg members",
-        brief="Listet die Mitglieder der Lerngruppe auf.",
+        brief="Zählt die Mitglieder der Lerngruppe auf.",
     )
     @cmd_lg.command(name="members")
     async def cmd_members(self, ctx):
@@ -903,7 +903,7 @@ class LearningGroups(commands.Cog):
         syntax="!lg join <lg-id>",
         brief="Fragt bei der Organisatorin einer Lerngruppe um Aufnahme an.",
         parameters={
-            "id": "Die ID zur Lerngruppe."
+            "id": "Die ID der Lerngruppe."
         }
     )
     @cmd_lg.command(name="join")
@@ -930,7 +930,7 @@ class LearningGroups(commands.Cog):
         )
         await utils.send_dm(ctx.author, f"Deine Anfrage wurde an **#{channel.name}** gesendet. "
                                         "Sobald die Organisatorin der Lerngruppe darüber "
-                                        "entschieden hat bekommst du Bescheid.")
+                                        "entschieden hat, bekommst du Bescheid.")
 
     @help(
         command_group="lg",
-- 
GitLab


From d3760ce480198f1b7308aebfcd4ec4de184a226d Mon Sep 17 00:00:00 2001
From: jmb-oddbook <oddbook@posteo.net>
Date: Thu, 11 Aug 2022 22:25:47 +0200
Subject: [PATCH 4/7] Ein Tippfehler noch korrigiert

---
 cogs/learninggroups.py | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/cogs/learninggroups.py b/cogs/learninggroups.py
index 8eb187c..2d959c0 100644
--- a/cogs/learninggroups.py
+++ b/cogs/learninggroups.py
@@ -349,7 +349,7 @@ class LearningGroups(commands.Cog):
                            "\nMit dem nachfolgenden Kommando kann eine Kommilitonin darum "
                            "bitten in die Lerngruppe aufgenommen zu werden wenn die Gruppe privat ist.\n"
                            f"!lg join {channel.id}"
-                            "\n(Manche Kommandos werden Discord eingeschränkt und können nur einmal alle 5 Minuten ausgeführt werden.)"
+                            "\n(Manche Kommandos werden von Discord eingeschränkt und können nur einmal alle 5 Minuten ausgeführt werden.)"
                            "```"
                            )
         self.groups["groups"][str(channel.id)] = {
-- 
GitLab


From e40dd51d3fc1e06f43f09f7f5cd04ae479187e00 Mon Sep 17 00:00:00 2001
From: jmb-oddbook <oddbook@posteo.net>
Date: Thu, 25 Aug 2022 16:03:52 +0200
Subject: [PATCH 5/7] All instances of "owner" changed to "organizer".

---
 cogs/learninggroups.py | 96 +++++++++++++++++++++---------------------
 1 file changed, 48 insertions(+), 48 deletions(-)

diff --git a/cogs/learninggroups.py b/cogs/learninggroups.py
index 2d959c0..19692f6 100644
--- a/cogs/learninggroups.py
+++ b/cogs/learninggroups.py
@@ -132,13 +132,13 @@ class LearningGroups(commands.Cog):
             return GroupState.PRIVATE
         return None
 
-    def is_request_owner(self, request, member):
-        return request["owner_id"] == member.id
+    def is_request_organizer(self, request, member):
+        return request["organizer_id"] == member.id
 
-    def is_group_owner(self, channel, member):
+    def is_group_organizer(self, channel, member):
         channel_config = self.groups["groups"].get(str(channel.id))
         if channel_config:
-            return channel_config["owner_id"] == member.id
+            return channel_config["organizer_id"] == member.id
         return False
 
     def is_mod(self, member):
@@ -233,7 +233,7 @@ class LearningGroups(commands.Cog):
             if lg_channel['is_listed'] and lg_channel['state'] == GroupState.PRIVATE:
                 group_config = self.groups["groups"].get(lg_channel['channel_id'])
                 if group_config:
-                    user = await self.bot.fetch_user(group_config['owner_id'])
+                    user = await self.bot.fetch_user(group_config['organizer_id'])
                     if user:
                         course_msg += f" **@{user.name}#{user.discriminator}**"
                 course_msg +=  f"\n       **↳** `!lg join {groupchannel.id}`"
@@ -324,7 +324,7 @@ class LearningGroups(commands.Cog):
         full_channel_name = self.full_channel_name(requested_channel_config)
         channel = await category.create_text_channel(full_channel_name)
         await self.move_channel(channel, category, False)
-        user = await self.bot.fetch_user(requested_channel_config["owner_id"])
+        user = await self.bot.fetch_user(requested_channel_config["organizer_id"])
 
         await channel.send(f":wave: <@!{user.id}>, hier ist deine neue Lerngruppe.\n"
                            "Es gibt offene und private Lerngruppen. Eine offene Lerngruppe ist für jeden sichtbar "
@@ -333,7 +333,7 @@ class LearningGroups(commands.Cog):
                            "```"
                            "Funktionen für Gruppenorganisatorinnen:\n"
                            "!lg addmember <@newmember>: Fügt ein Mitglied zur Lerngruppe hinzu.\n"                           
-                           "!lg owner <@newowner>: Ändert die Organisatorin der Lerngruppe auf @newowner.\n"
+                           "!lg organizer <@neworganizer>: Ändert die Organisatorin der Lerngruppe auf @neworganizer.\n"
                            "!lg open: Öffnet eine Lerngruppe.\n"
                            "!lg close: Schließt eine Lerngruppe.\n"
                            "!lg private: Stellt die Lerngruppe auf privat.\n"
@@ -343,7 +343,7 @@ class LearningGroups(commands.Cog):
                            "\nKommandos für alle:\n"
                            "!lg id: Zeigt die ID der Lerngruppe an mit der andere Kommilitoninnen beitreten können.\n"
                            "!lg members: Zeigt die Mitglieder der Lerngruppe an.\n"
-                           "!lg owner: Zeigt die Organisatorin der Lerngruppe an.\n"
+                           "!lg organizer: Zeigt die Organisatorin der Lerngruppe an.\n"
                            "!lg leave: Du verlässt die Lerngruppe.\n"
                            "!lg join: Anfrage, um der Lerngruppe beizutreten.\n"
                            "\nMit dem nachfolgenden Kommando kann eine Kommilitonin darum "
@@ -353,7 +353,7 @@ class LearningGroups(commands.Cog):
                            "```"
                            )
         self.groups["groups"][str(channel.id)] = {
-            "owner_id": requested_channel_config["owner_id"],
+            "organizer_id": requested_channel_config["organizer_id"],
             "last_rename": int(time.time())
         }
 
@@ -471,11 +471,11 @@ class LearningGroups(commands.Cog):
         if not group_config:
             return overwrites
 
-        owner = self.bot.get_user(group_config["owner_id"])
-        if not owner:
+        organizer = self.bot.get_user(group_config["organizer_id"])
+        if not organizer:
             return overwrites
 
-        overwrites[owner] = disnake.PermissionOverwrite(read_messages=True)
+        overwrites[organizer] = disnake.PermissionOverwrite(read_messages=True)
         users = group_config.get("users")
         if not users:
             return overwrites
@@ -553,9 +553,9 @@ class LearningGroups(commands.Cog):
     )
     @cmd_lg.command(name="add")
     @commands.check(utils.is_mod)
-    async def cmd_add_group(self, ctx, arg_course, arg_name, arg_semester, arg_state, arg_owner: disnake.Member):
+    async def cmd_add_group(self, ctx, arg_course, arg_name, arg_semester, arg_state, arg_organizer: disnake.Member):
         state = self.arg_state_to_group_state(arg_state)
-        channel_config = {"owner_id": arg_owner.id, "course": arg_course, "name": arg_name, "semester": arg_semester,
+        channel_config = {"organizer_id": arg_organizer.id, "course": arg_course, "name": arg_name, "semester": arg_semester,
                           "state": state, "is_listed": False}
 
         if not await self.is_channel_config_valid(ctx, channel_config, ctx.command.name):
@@ -612,7 +612,7 @@ class LearningGroups(commands.Cog):
 
         if len(arg_semester) == 8:
             arg_semester = f"{arg_semester[0:4]}{arg_semester[-2:]}"
-        channel_config = {"owner_id": ctx.author.id, "course": arg_course, "name": arg_name, "semester": arg_semester,
+        channel_config = {"organizer_id": ctx.author.id, "course": arg_course, "name": arg_name, "semester": arg_semester,
                           "state": state, "is_listed": False}
 
         if not await self.is_channel_config_valid(ctx, channel_config, ctx.command.name):
@@ -642,7 +642,7 @@ class LearningGroups(commands.Cog):
     )
     @cmd_lg.command(name="show")
     async def cmd_show(self, ctx):
-        if self.is_group_owner(ctx.channel, ctx.author) or utils.is_mod(ctx):
+        if self.is_group_organizer(ctx.channel, ctx.author) or utils.is_mod(ctx):
             channel_config = self.channels[str(ctx.channel.id)]
             if channel_config:
                 if channel_config.get("state") == GroupState.PRIVATE:
@@ -665,7 +665,7 @@ class LearningGroups(commands.Cog):
     )
     @cmd_lg.command(name="hide")
     async def cmd_hide(self, ctx):
-        if self.is_group_owner(ctx.channel, ctx.author) or utils.is_mod(ctx):
+        if self.is_group_organizer(ctx.channel, ctx.author) or utils.is_mod(ctx):
             channel_config = self.channels[str(ctx.channel.id)]
             if channel_config:
                 if channel_config.get("state") == GroupState.PRIVATE:
@@ -702,7 +702,7 @@ class LearningGroups(commands.Cog):
     )
     @cmd_lg.command(name="open", aliases=["opened", "offen"])
     async def cmd_open(self, ctx):
-        if self.is_group_owner(ctx.channel, ctx.author) or utils.is_mod(ctx):
+        if self.is_group_organizer(ctx.channel, ctx.author) or utils.is_mod(ctx):
             await self.set_channel_state(ctx.channel, state=GroupState.OPEN)
 
     @help(
@@ -717,7 +717,7 @@ class LearningGroups(commands.Cog):
     )
     @cmd_lg.command(name="close", aliases=["closed", "geschlossen"])
     async def cmd_close(self, ctx):
-        if self.is_group_owner(ctx.channel, ctx.author) or utils.is_mod(ctx):
+        if self.is_group_organizer(ctx.channel, ctx.author) or utils.is_mod(ctx):
             await self.set_channel_state(ctx.channel, state=GroupState.CLOSED)
 
     @help(
@@ -732,7 +732,7 @@ class LearningGroups(commands.Cog):
     )
     @cmd_lg.command(name="private", aliases=["privat"])
     async def cmd_private(self, ctx):
-        if self.is_group_owner(ctx.channel, ctx.author) or utils.is_mod(ctx):
+        if self.is_group_organizer(ctx.channel, ctx.author) or utils.is_mod(ctx):
             if await self.set_channel_state(ctx.channel, state=GroupState.PRIVATE):
                 await self.update_permissions(ctx.channel)
 
@@ -771,42 +771,42 @@ class LearningGroups(commands.Cog):
     @help(
         command_group="lg",
         category="learninggroups",
-        syntax="!lg owner <@usermention>",
-        example="!owner @someuser",
+        syntax="!lg organizer <@usermention>",
+        example="!organizer @someuser",
         brief="Bestimmt die Organisatorin eines Lerngruppenkanals.",
         description="Muss im betreffenden Lerngruppenkanal ausgeführt werden. ",
         parameters={
             "@usermention": "Die neue Organisatorin der Lerngruppe."
         }
     )
-    @cmd_lg.command(name="owner")
-    async def cmd_owner(self, ctx, new_owner: disnake.Member = None):
+    @cmd_lg.command(name="organizer")
+    async def cmd_organizer(self, ctx, new_organizer: disnake.Member = None):
         group_config = self.groups["groups"].get(str(ctx.channel.id))
 
         if not group_config:
             self.groups["groups"][str(ctx.channel.id)] = {}
             group_config = self.groups["groups"][str(ctx.channel.id)]
 
-        owner_id = group_config.get("owner_id")
+        organizer_id = group_config.get("organizer_id")
 
-        if not owner_id:
+        if not organizer_id:
             return
 
-        if not new_owner:
-                user = await self.bot.fetch_user(owner_id)
+        if not new_organizer:
+                user = await self.bot.fetch_user(organizer_id)
                 await ctx.channel.send(f"Organisatorin: @{user.name}#{user.discriminator}")
 
         elif isinstance(group_config, dict):
-            owner = await self.bot.fetch_user(owner_id)
-            if self.is_group_owner(ctx.channel, ctx.author) or utils.is_mod(ctx):
-                group_config["owner_id"] = new_owner.id
-                await self.remove_member_from_group(ctx.channel, new_owner, False)
-                if new_owner != owner:
-                    await self.add_member_to_group(ctx.channel, owner, False)
+            organizer = await self.bot.fetch_user(organizer_id)
+            if self.is_group_organizer(ctx.channel, ctx.author) or utils.is_mod(ctx):
+                group_config["organizer_id"] = new_organizer.id
+                await self.remove_member_from_group(ctx.channel, new_organizer, False)
+                if new_organizer != organizer:
+                    await self.add_member_to_group(ctx.channel, organizer, False)
                 await self.save_groups()
                 await self.update_permissions(ctx.channel)
                 await ctx.channel.send(
-                    f"Glückwunsch {new_owner.mention}! Du bist jetzt die Organisatorin dieser Lerngruppe.")
+                    f"Glückwunsch {new_organizer.mention}! Du bist jetzt die Organisatorin dieser Lerngruppe.")
 
     @help(
         command_group="lg",
@@ -827,7 +827,7 @@ class LearningGroups(commands.Cog):
                                        "Lerngruppenkanal angefügt werden. `!lg addmember <@usermention> <#channel>`")
                 return
             arg_channel = ctx.channel
-        if self.is_group_owner(arg_channel, ctx.author) or utils.is_mod(ctx):
+        if self.is_group_organizer(arg_channel, ctx.author) or utils.is_mod(ctx):
             await self.add_member_to_group(arg_channel, arg_member)
             await self.update_permissions(arg_channel)
 
@@ -861,14 +861,14 @@ class LearningGroups(commands.Cog):
         if not group_config:
             await ctx.channel.send("Das ist kein Lerngruppenkanal.")
             return
-        owner_id = group_config.get("owner_id")
+        organizer_id = group_config.get("organizer_id")
 
-        if not owner_id:
+        if not organizer_id:
             return
 
-        owner = await self.bot.fetch_user(owner_id)
+        organizer = await self.bot.fetch_user(organizer_id)
         users = group_config.get("users", {})
-        if not users and not owner:
+        if not users and not organizer:
             await ctx.channel.send("Keine Lerngruppenmitglieder vorhanden.")
             return
 
@@ -878,7 +878,7 @@ class LearningGroups(commands.Cog):
             user = await self.bot.fetch_user(user_id)
             names.append("@" + user.name + "#" + user.discriminator)
 
-        await ctx.channel.send(f"Organisatorin: **@{owner.name}#{owner.discriminator}**\nMitglieder: " +
+        await ctx.channel.send(f"Organisatorin: **@{organizer.name}#{organizer.discriminator}**\nMitglieder: " +
                                (f"{', '.join(names)}" if len(names) > 0 else "Keine"))
 
     @help(
@@ -889,7 +889,7 @@ class LearningGroups(commands.Cog):
     )
     @cmd_lg.command(name="id")
     async def cmd_id(self, ctx):
-        if self.is_group_owner(ctx.channel, ctx.author) or utils.is_mod(ctx):
+        if self.is_group_organizer(ctx.channel, ctx.author) or utils.is_mod(ctx):
             group_config = self.groups["groups"].get(str(ctx.channel.id))
             if not group_config:
                 await ctx.channel.send("Das ist kein Lerngruppenkanal.")
@@ -925,7 +925,7 @@ class LearningGroups(commands.Cog):
             channel=channel,
             title="Jemand möchte deiner Lerngruppe beitreten!",
             description=f"<@!{ctx.author.id}> möchte gerne der Lerngruppe **#{channel.name}** beitreten.",
-            message=f"<@!{group_config['owner_id']}>, du wirst gebraucht. Anfrage von <@!{ctx.author.id}>:",
+            message=f"<@!{group_config['organizer_id']}>, du wirst gebraucht. Anfrage von <@!{ctx.author.id}>:",
             custom_prefix="learninggroups:join"
         )
         await utils.send_dm(ctx.author, f"Deine Anfrage wurde an **#{channel.name}** gesendet. "
@@ -940,7 +940,7 @@ class LearningGroups(commands.Cog):
     )
     @cmd_lg.command(name="kick")
     async def cmd_kick(self, ctx, arg_member: disnake.Member):
-        if self.is_group_owner(ctx.channel, ctx.author) or utils.is_mod(ctx):
+        if self.is_group_organizer(ctx.channel, ctx.author) or utils.is_mod(ctx):
             group_config = self.groups["groups"].get(str(ctx.channel.id))
             if not group_config:
                 await ctx.channel.send("Das ist keine gültiger Lerngruppenkanal.")
@@ -962,7 +962,7 @@ class LearningGroups(commands.Cog):
             await ctx.channel.send("Das ist keine gültiger Lerngruppenkanal.")
             return
 
-        if group_config["owner_id"] == ctx.author.id:
+        if group_config["organizer_id"] == ctx.author.id:
             await ctx.channel.send("Du kannst nicht aus deiner eigenen Lerngruppe flüchten. Gib erst die Verantwortung ab.")
             return
 
@@ -979,9 +979,9 @@ class LearningGroups(commands.Cog):
             if confirmed and self.is_mod(member):
                 await self.add_requested_group_channel(message, direct=False)
 
-            elif not confirmed and (self.is_request_owner(request, member) or self.is_mod(member)):
+            elif not confirmed and (self.is_request_organizer(request, member) or self.is_mod(member)):
                 if self.is_mod(member):
-                    user = await self.bot.fetch_user(request["owner_id"] )
+                    user = await self.bot.fetch_user(request["organizer_id"] )
                     if user:
                         await utils.send_dm(user, f"Deine Lerngruppenanfrage für #{self.full_channel_name(request)} wurde abgelehnt.")
                 await self.remove_group_request(message)
@@ -997,7 +997,7 @@ class LearningGroups(commands.Cog):
         if not group_config:
             return
 
-        if self.is_group_owner(channel, member) or self.is_mod(member):
+        if self.is_group_organizer(channel, member) or self.is_mod(member):
             if confirmed:
                 if message.mentions and len(message.mentions) == 2:
                     await self.add_member_to_group(channel, message.mentions[1])
-- 
GitLab


From 94303f260535d2d291c2eddd628c3ab997ce7f45 Mon Sep 17 00:00:00 2001
From: jmb-oddbook <oddbook@posteo.net>
Date: Fri, 26 Aug 2022 10:13:04 +0200
Subject: [PATCH 6/7] =?UTF-8?q?=C3=84nderungen=20von=20Lou-M's=20Review=20?=
 =?UTF-8?q?=C3=BCbernommen?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 cogs/learninggroups.py | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/cogs/learninggroups.py b/cogs/learninggroups.py
index 19692f6..4c7f2d7 100644
--- a/cogs/learninggroups.py
+++ b/cogs/learninggroups.py
@@ -23,7 +23,7 @@ from cogs.help import help, handle_error, help_category
   DISCORD_LEARNINGGROUPS_INFO - ID des Kanals, in dem die Lerngruppen-Informationen gepostet/aktualisert werden
   DISCORD_LEARNINGGROUPS_FILE - Name der Datei mit Verwaltungsdaten der Lerngruppen (minimaler Inhalt: {"requested": {},"groups": {}})
   DISCORD_LEARNINGGROUPS_COURSE_FILE - Name der Datei welche die Kursnamen für die Lerngruppen-Informationen enthält (minimaler Inhalt: {})
-  DISCORD_MOD_ROLE - ID der Moderatorin, die erweiterte Lerngruppen-Aktionen ausführen darf
+  DISCORD_MOD_ROLE - ID der Moderations-Rolle, die erweiterte Lerngruppen-Aktionen ausführen darf
 """
 
 LG_OPEN_SYMBOL = f'🌲'
@@ -331,7 +331,7 @@ class LearningGroups(commands.Cog):
                            "und jeder kann darin schreiben. Eine private Lerngruppe ist unsichtbar und auf eine "
                            "Gruppe an Kommilitoninnen beschränkt."
                            "```"
-                           "Funktionen für Gruppenorganisatorinnen:\n"
+                           "Funktionen für Lerngruppenorganisatorinnen:\n"
                            "!lg addmember <@newmember>: Fügt ein Mitglied zur Lerngruppe hinzu.\n"                           
                            "!lg organizer <@neworganizer>: Ändert die Organisatorin der Lerngruppe auf @neworganizer.\n"
                            "!lg open: Öffnet eine Lerngruppe.\n"
@@ -637,7 +637,7 @@ class LearningGroups(commands.Cog):
         brief="Zeigt einen privaten Lerngruppenkanal trotzdem in der Liste an.",
         description=("Muss im betreffenden Lerngruppenkanal ausgeführt werden. "
                      "Die Lerngruppe wird in der Übersicht der Lerngruppen aufgeführt, so dass Kommilitoninnen noch "
-                     "anfragen können in die Lerngruppe aufgenommen zu werden."
+                     "anfragen können, in die Lerngruppe aufgenommen zu werden."
                      "Diese Aktion kann nur von der Organisatorin der Lerngruppe ausgeführt werden. ")
     )
     @cmd_lg.command(name="show")
@@ -772,7 +772,7 @@ class LearningGroups(commands.Cog):
         command_group="lg",
         category="learninggroups",
         syntax="!lg organizer <@usermention>",
-        example="!organizer @someuser",
+        example="!lg organizer @someuser",
         brief="Bestimmt die Organisatorin eines Lerngruppenkanals.",
         description="Muss im betreffenden Lerngruppenkanal ausgeführt werden. ",
         parameters={
-- 
GitLab


From e5d741b28d01a08b5b4b63ecd209d06441344592 Mon Sep 17 00:00:00 2001
From: jmb-oddbook <oddbook@posteo.net>
Date: Fri, 26 Aug 2022 11:58:18 +0200
Subject: [PATCH 7/7] =?UTF-8?q?Beschreibungen=20der=20Umgebungsvariablen?=
 =?UTF-8?q?=20von=20LEARNINGGROUPS=20modifiziert=20bzw.=20hinzugef=C3=BCgt?=
 =?UTF-8?q?,=20kleinere=20Typos?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .env.template          | 26 ++++++++++++++------------
 README.md              |  2 +-
 cogs/learninggroups.py |  7 ++++---
 3 files changed, 19 insertions(+), 16 deletions(-)

diff --git a/.env.template b/.env.template
index 651b554..bd2ced8 100644
--- a/.env.template
+++ b/.env.template
@@ -9,7 +9,7 @@ DISCORD_PROD=<True, if running in an productive environment, otherwise False>
 
 # IDs
 DISCORD_OWNER=<ID of Server owner>
-DISCORD_MOD_ROLE=<ID of Mod Role>
+DISCORD_MOD_ROLE=<ID of Mod Role, permitted to carry out extended actions in learning groups>
 DISCORD_MOD_CHANNEL=<ID of Mod only channel>
 DISCORD_CATEGORY_LERNGRUPPEN=<Channel category for learning group voice channels>
 DISCORD_WELCOME_CHANNEL=<ID of Welcome channel, where Welcome Message should be posted>
@@ -28,10 +28,12 @@ DISCORD_NEWS_CHANNEL=<ID of News Channel, where news from faculty are posted>
 DISCORD_POLL_SUGG_CHANNEL=<ID of Channel, where poll suggestions are posted>
 DISCORD_NEWS_ROLE=<ID of news role>
 DISCORD_CHANGE_LOG_CHANNEL=<ID of channel used by change log feature>
-DISCORD_LEARNINGGROUPS_OPEN=<ID of Channel category for open learning groups>
-DISCORD_LEARNINGGROUPS_CLOSE=<ID of Channel category for closed learning groups>
-DISCORD_LEARNINGGROUPS_REQUEST=<ID of Channel category for learning group requests>
-DISCORD_LEARNINGGROUPS_INFO=<ID of Channel category for open learning groups>
+DISCORD_LEARNINGGROUPS_OPEN=<ID of the channel category for open learning groups>
+DISCORD_LEARNINGGROUPS_CLOSE=<ID of the channel category for closed learning groups>
+DISCORD_LEARNINGGROUPS_PRIVATE=<ID of the channel category for private learning groups>
+DISCORD_LEARNINGGROUPS_ARCHIVE=<ID of the channel category for archived learning groups>
+DISCORD_LEARNINGGROUPS_REQUEST=<ID of the channel category for learning group requests made via the bot>
+DISCORD_LEARNINGGROUPS_INFO=<ID of the channel category for posting or updating information about the learning group>
 DISCORD_IDEE_CHANNEL=<ID of Channel, where bot ideas can be submitted>
 DISCORD_IDEE_EMOJI=<ID of Idee Emoji, used for reactions>
 DISCORD_CALMDOWN_ROLE=<ID of "Calmdown" role>
@@ -40,7 +42,7 @@ DISCORD_ELM_STREET_CHANNEL=<ID of elm street channel>
 DISCORD_HALLOWEEN_CATEGORY=<ID of Halloween category>
 DISCORD_SEASONAL_EVENTS_CATEGORY=<ID of Seasonal Events Category>
 DISCORD_ADVENT_CALENDAR_CHANNEL_2021=<ID of advent calendar chanel for 2021>
-DISCORD_JOBOFFERS_CHANNEL=<ID of stellenangebote Channel>
+DISCORD_JOBOFFERS_CHANNEL=<ID of "Stellenangebote" Channel>
 
 # JSON Files
 DISCORD_ROLES_FILE=<File name for roles JSON file>
@@ -48,18 +50,18 @@ DISCORD_HELP_FILE=<File name for help JSON file>
 DISCORD_TOPS_FILE=<File name for TOPS JSON file>
 DISCORD_APPOINTMENTS_FILE=<File name for appointments JSON file>
 DISCORD_TEXT_COMMANDS_FILE=<File name for text commands JSON file>
-DISCORD_LEARNINGGROUPS_FILE=<File name for learning groups JSON file>
-DISCORD_LEARNINGGROUPS_COURSE_FILE=<File name for leaarning groups courses JSON file>
+DISCORD_LEARNINGGROUPS_FILE=<Name of the JSON file for administering learning groups>
+DISCORD_LEARNINGGROUPS_COURSE_FILE=<Name of the JSON file that contains the course names used in the learning group information>
 DISCORD_CALMDOWN_FILE=<File name for calmdowns JSON file>
 DISCORD_MODULE_COURSE_FILE=<File name for module course JSON file>
 DISCORD_MODULE_DATA_FILE=<File name for module data JSON file>
 DISCORD_TIMER_FILE=<File name for running timers JSON file>
 DISCORD_ADVENT_CALENDAR_FILE=<File name for advent calendar JSON file>
-DISCORD_JOBOFFERS_FILE=<File name for joboffers JSON file>
+DISCORD_JOBOFFERS_FILE=<File name for job offers JSON file>
 
 # Misc
 DISCORD_DATE_TIME_FORMAT=<Date and time format used for commands like %d.%m.%Y %H:%M>
-DISCORD_IDEE_REACT_QTY=<Amount of reactions to a submitted idea, neccessary to create a github issue (amount is including botys own reaction)>
+DISCORD_IDEE_REACT_QTY=<Amount of reactions to a submitted idea, neccessary to create a github issue (amount is including Boty's own reaction)>
 DISCORD_ADVENT_CALENDAR_START=<Start date and time for advent calendar. Something like "01.12.2021 00:00">
-DISCORD_JOBOFFERS_URL=<url from which joboffers are fetched, atm "https://www.fernuni-hagen.de/uniintern/arbeitsthemen/karriere/stellen/include/hk.shtml">
-DISCORD_JOBOFFERS_STD_FAK=<faculty for which joboffers should be postet, one of [mi|rewi|wiwi|ksw|psy|other|all]>
\ No newline at end of file
+DISCORD_JOBOFFERS_URL=<url from which job offers are fetched, atm "https://www.fernuni-hagen.de/uniintern/arbeitsthemen/karriere/stellen/include/hk.shtml">
+DISCORD_JOBOFFERS_STD_FAK=<faculty for which job offers should be posted, one of [mi|rewi|wiwi|ksw|psy|other|all]>
\ No newline at end of file
diff --git a/README.md b/README.md
index 14e9a9b..05babe4 100644
--- a/README.md
+++ b/README.md
@@ -27,7 +27,7 @@ Zu dem Zeitpunkt kann Boty:
 
 * [Lerngruppenverwaltung](https://github.com/FU-Hagen-Discord/fernuni-bot/tree/master/cogs/learninggroups.py)
   * Anfragen/ Erstellen/ Umbenennen/ Löschen
-  * Ownership -> Toggle: 🛑vollzählig/ 🌲offen für neue Mitglieder
+  * Organisatorenrolle -> Lerngruppenstatus als öffentlich sichtbar und 🌲offen für neue Mitglieder oder 🛑vollzählig, oder als unsichtbare 🚪private Gruppe festlegen.
 
 * [Kalenderfunktion](https://github.com/FU-Hagen-Discord/fernuni-bot/tree/master/cogs/appointments.py)
 
diff --git a/cogs/learninggroups.py b/cogs/learninggroups.py
index 4c7f2d7..e28e386 100644
--- a/cogs/learninggroups.py
+++ b/cogs/learninggroups.py
@@ -15,9 +15,10 @@ import utils
 from cogs.help import help, handle_error, help_category
 
 """
-  Environment Variablen:
+  Umgebungsvariablen:
   DISCORD_LEARNINGGROUPS_OPEN - Kategorie-ID der offenen Lerngruppen
-  DISCORD_LEARNINGGROUPS_CLOSE - Kategorie-ID der privaten Lerngruppen
+  DISCORD_LEARNINGGROUPS_CLOSE - Kategorie-ID der geschlossenen Lerngruppen
+  DISCORD_LEARNINGGROUPS_PRIVATE - Kategorie-ID der privaten Lerngruppen
   DISCORD_LEARNINGGROUPS_ARCHIVE - Kategorie-ID der archivierten Lerngruppen
   DISCORD_LEARNINGGROUPS_REQUEST - ID des Kanals, in dem Anfragen, die über den Bot gestellt wurden, eingetragen werden
   DISCORD_LEARNINGGROUPS_INFO - ID des Kanals, in dem die Lerngruppen-Informationen gepostet/aktualisert werden
@@ -651,7 +652,7 @@ class LearningGroups(commands.Cog):
                 elif channel_config.get("state") == GroupState.OPEN:
                     await ctx.channel.send("Nichts zu tun. Offene Lerngruppen werden sowieso in der Liste angezeigt.")
                 elif channel_config.get("state") == GroupState.CLOSED:
-                    await ctx.channel.send("Möchtest du die Gruppen öffnen? Versuch‘s mit `!lg open`")
+                    await ctx.channel.send("Möchtest du die Gruppen öffnen? Versuch's mit `!lg open`")
 
 
     @help(
-- 
GitLab