diff --git a/cogs/learninggroups.py b/cogs/learninggroups.py index 675db08148ed4c2b1a404a1d1b5e17b408dabdcb..21dbd55ae1b6144e2b2dedb64e84b5273ea4b8e0 100644 --- a/cogs/learninggroups.py +++ b/cogs/learninggroups.py @@ -257,8 +257,10 @@ class LearningGroups(commands.Cog): category = await self.bot.fetch_channel(self.categories[GroupState.ARCHIVED]) await self.move_channel(channel, category) await channel.edit(name=f"archiv-${channel.name[1:]}") - await self.remove_group(channel) await self.update_permissions(channel) + await self.remove_group(channel) + await self.update_statusmessage() + async def set_channel_state(self, channel, state: GroupState = None): channel_config = self.channels[str(channel.id)] @@ -417,11 +419,14 @@ class LearningGroups(commands.Cog): users[mid] = True user = await self.bot.fetch_user(mid) if user and send_message: - 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.") + 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.") + except: + pass group_config["users"] = users @@ -573,18 +578,38 @@ class LearningGroups(commands.Cog): "name": "Ein frei wählbarer Text ohne Leerzeichen.", "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)." + "status": "Gibt an ob die Lerngruppe für weitere Lernwillige geöffnet ist (open) oder nicht (closed) oder ob es sich um eine private Lerngruppe handelt (private)." } ) @cmd_lg.command(name="request", aliases=["r", "req"]) async def cmd_request_group(self, ctx, arg_course, arg_name, arg_semester, arg_state): + + arg_state = re.sub(r"[^a-z0-9]", "", arg_state.lower()) + arg_semester = re.sub(r"[^a-z0-9]", "", arg_semester.lower()) + + if re.match(r"(wise)|(sose)[0-9]+", arg_state) and re.match(r"(open)|(closed*)|(private)", arg_semester): + tmp = arg_state + arg_state = arg_semester + arg_semester = tmp + + arg_semester = re.sub(r"[^wiseo0-9]", "", arg_semester) + + arg_state = re.sub(r"[^a-z]", "", arg_state) + state = self.arg_state_to_group_state(arg_state) + + arg_course = re.sub(r"[^0-9]", "", arg_course) + arg_course = re.sub(r"^0+", "", arg_course) + arg_name = re.sub( r"[^A-Za-zäöüß0-9-]", "", arg_name.lower().replace(" ", "-") ) - arg_semester = arg_semester.lower() + + + + 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, @@ -900,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"Anfrage von <@!{ctx.author.id}>", + message=f"<@!{group_config['owner_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. " @@ -974,8 +999,8 @@ class LearningGroups(commands.Cog): if self.is_group_owner(channel, member) or self.is_mod(member): if confirmed: - if message.mentions and len(message.mentions) == 1: - await self.add_member_to_group(channel, message.mentions[0]) + if message.mentions and len(message.mentions) == 2: + await self.add_member_to_group(channel, message.mentions[1]) await self.update_permissions(channel) else: