From c73b5e53c7ce0161bfaad43f9427d13041c7b4dd Mon Sep 17 00:00:00 2001 From: Eddy de Vink Date: Sat, 5 Sep 2026 00:26:33 +0200 Subject: [PATCH] Extend !rooms help: dedicated help subcommand with full NL guide, richer help strings on all subcommands; v2.3.1 --- maubot.yaml | 2 +- roomsoverview.mbp | Bin 8256 -> 8762 bytes roomsoverview.py | 53 +++++++++++++++++++++++++++++++++++++++++----- 3 files changed, 49 insertions(+), 6 deletions(-) diff --git a/maubot.yaml b/maubot.yaml index c38062b..b114188 100644 --- a/maubot.yaml +++ b/maubot.yaml @@ -1,6 +1,6 @@ maubot: 0.1.0 id: nl.roomsoverview -version: 2.3.0 +version: 2.3.1 license: MIT modules: - roomsoverview diff --git a/roomsoverview.mbp b/roomsoverview.mbp index bdbe11f2174c903d52e79fa580d5110c55d52635..35e6db815435335eca7fa6e391b6739910a333dc 100644 GIT binary patch delta 7437 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 Jr1{VGe*kP{ACLe5 diff --git a/roomsoverview.py b/roomsoverview.py index 3f9ed25..7f1d0bb 100644 --- a/roomsoverview.py +++ b/roomsoverview.py @@ -530,16 +530,52 @@ class RoomsOverviewPlugin(Plugin): ) await evt.respond(content) + async def _send_help(self, evt: MessageEvent) -> None: + """Uitgebreide Nederlandstalige handleiding voor !rooms.""" + help_text = ( + "**!rooms** — overzicht van de room-index\n\n" + "Toont alle rooms als kaarten met naam, ledental, omschrijving " + "en een directe join-link. Ruimtes met een eigen icoon tonen die " + "naast de naam.\n\n" + "**Basis:**\n" + "* `!rooms` — toon de volledige lijst (bij veel rooms verdeeld " + "over meerdere berichten)\n\n" + "**Subcommando's (moderator of hoger vereist):**\n" + "* `!rooms add ` — voeg een room toe aan de index\n" + "* `!rooms edit =` — wijzig een " + "veld van een room\n" + "* `!rooms remove ` — verwijder een room uit de index\n" + "* `!rooms refresh` — controleer of rooms nog bestaan en vul " + "ontbrekende avatars aan\n\n" + "**Veld bij edit:** `name` (naam), `topic` (omschrijving) of " + "`alias` (adres). Een lege waarde wist het veld.\n\n" + "**Voorbeelden:**\n" + "* `!rooms add #algemeen:mtux.nl`\n" + "* `!rooms edit #algemeen:mtux.nl name=Algemeen Overleg`\n" + "* `!rooms edit #algemeen:mtux.nl topic=` (wist de omschrijving)\n" + "* `!rooms remove #algemeen:mtux.nl`\n\n" + "Alleen moderators (macht ≥ 50) mogen rooms toevoegen, wijzigen " + "of verwijderen. Iedereen kan de lijst bekijken." + ) + await evt.respond(help_text, markdown=True) + @command.new( name="rooms", - help="Toon de room-index; subcommand: add, edit, remove, refresh", + help="Toon de room-index als kaarten; subcommands: add, edit, remove, refresh, help", require_subcommand=False, ) async def handle_rooms(self, evt: MessageEvent) -> None: await evt.mark_read() await self._send_list(evt) - @handle_rooms.subcommand(name="add", help="Voeg een room toe (moderator+)") + @handle_rooms.subcommand(name="help", help="Toon deze handleiding") + async def rooms_help(self, evt: MessageEvent) -> None: + await self._send_help(evt) + + @handle_rooms.subcommand( + name="add", + help="Voeg een room toe aan de index: !rooms add (moderator+)", + ) @command.argument("room", pass_raw=True, required=True) async def add_room(self, evt: MessageEvent, room: str) -> None: if not await self._is_mod(evt.room_id, evt.sender): @@ -585,7 +621,8 @@ class RoomsOverviewPlugin(Plugin): @handle_rooms.subcommand( name="edit", - help="Wijzig naam/topic/alias van een room (moderator+)", + help="Wijzig een veld van een room: !rooms edit " + "= (moderator+)", ) @command.argument("args", pass_raw=True, required=True) async def edit_room(self, evt: MessageEvent, args: str) -> None: @@ -635,7 +672,10 @@ class RoomsOverviewPlugin(Plugin): f"Room bijgewerkt: **{label}** — {field_name} is nu `{shown}`." ) - @handle_rooms.subcommand(name="remove", help="Verwijder een room (moderator+)") + @handle_rooms.subcommand( + name="remove", + help="Verwijder een room uit de index: !rooms remove (moderator+)", + ) @command.argument("room", pass_raw=True, required=True) async def remove_room(self, evt: MessageEvent, room: str) -> None: if not await self._is_mod(evt.room_id, evt.sender): @@ -653,7 +693,10 @@ class RoomsOverviewPlugin(Plugin): else: await evt.reply(f"Room `{room_id}` stond niet in de index.") - @handle_rooms.subcommand(name="refresh", help="Valideer de index en vul avatars aan (moderator+)") + @handle_rooms.subcommand( + name="refresh", + help="Controleer of rooms bestaan en vul ontbrekende avatars aan (moderator+)", + ) async def refresh_index(self, evt: MessageEvent) -> None: if not await self._is_mod(evt.room_id, evt.sender): await evt.reply("Geen permissie: moderator of hoger vereist.")