Dutch command names: !kamer with subcommands over/voegtoe/wijzig/verwijder/ververs/hulp; English names kept as aliases; v3.0.0
This commit is contained in:
parent
2939951391
commit
fe149713f9
3 changed files with 56 additions and 50 deletions
|
|
@ -1,6 +1,6 @@
|
|||
maubot: 0.1.0
|
||||
id: nl.roomsoverview
|
||||
version: 2.4.1
|
||||
version: 3.0.0
|
||||
license: MIT
|
||||
modules:
|
||||
- roomsoverview
|
||||
|
|
|
|||
Binary file not shown.
104
roomsoverview.py
104
roomsoverview.py
|
|
@ -98,7 +98,7 @@ async def upgrade_v3(conn: Connection, scheme: Scheme) -> None:
|
|||
|
||||
|
||||
def _parse_edit_args(args: str) -> Optional[Tuple[str, str, str]]:
|
||||
"""Parse `!rooms edit <room> <veld>=<waarde>`.
|
||||
"""Parse `!kamer wijzig <room> <veld>=<waarde>`.
|
||||
|
||||
Retourneert (room_ref, field, value) of None bij ongeldige vorm.
|
||||
field is genormaliseerd naar lowercase; value mag leeg zijn (wissen).
|
||||
|
|
@ -535,8 +535,8 @@ class RoomsOverviewPlugin(Plugin):
|
|||
rooms = self._sort_rooms(await self._list_rooms())
|
||||
if not rooms:
|
||||
await evt.reply(
|
||||
"De room-index is nog leeg. Moderators kunnen rooms toevoegen met "
|
||||
"`!rooms add <room-id-of-alias>`."
|
||||
"De kamer-index is nog leeg. Moderators kunnen kamers toevoegen met "
|
||||
"`!kamer voegtoe <room-id-of-alias>`."
|
||||
)
|
||||
return
|
||||
await self._send_cards(
|
||||
|
|
@ -570,7 +570,7 @@ class RoomsOverviewPlugin(Plugin):
|
|||
found = await self._search_rooms(query)
|
||||
query_label = " ".join(query.split())
|
||||
if not found:
|
||||
await evt.reply(f"Geen rooms gevonden voor `{query_label}`.")
|
||||
await evt.reply(f"Geen kamers gevonden voor `{query_label}`.")
|
||||
return
|
||||
await self._send_cards(
|
||||
evt,
|
||||
|
|
@ -580,67 +580,70 @@ class RoomsOverviewPlugin(Plugin):
|
|||
)
|
||||
|
||||
async def _send_help(self, evt: MessageEvent) -> None:
|
||||
"""Uitgebreide Nederlandstalige handleiding voor !rooms."""
|
||||
"""Uitgebreide Nederlandstalige handleiding voor !kamer."""
|
||||
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"
|
||||
"**!kamer** — overzicht van de kamer-index\n\n"
|
||||
"Toont alle kamers als kaarten met naam, ledental, omschrijving "
|
||||
"en een directe join-link. Kamers met een eigen icoon tonen die "
|
||||
"naast de naam. De oude Engelse commando's (`!rooms`, `add`, "
|
||||
"`edit`, `remove`, `refresh`, `help`) blijven als alias werken.\n\n"
|
||||
"**Basis:**\n"
|
||||
"* `!rooms` — toon de volledige lijst (bij veel rooms verdeeld "
|
||||
"* `!kamer` — toon de volledige lijst (bij veel kamers verdeeld "
|
||||
"over meerdere berichten)\n"
|
||||
"* `!rooms over <zoekterm ...>` — zoek rooms op naam, alias en/of "
|
||||
"omschrijving (bijv. `!rooms over linux`); alle termen moeten "
|
||||
"* `!kamer over <zoekterm ...>` — zoek kamers op naam, alias en/of "
|
||||
"omschrijving (bijv. `!kamer over linux`); alle termen moeten "
|
||||
"matchen\n\n"
|
||||
"**Subcommando's (moderator of hoger vereist):**\n"
|
||||
"* `!rooms add <room-id of #alias>` — voeg een room toe aan de index\n"
|
||||
"* `!rooms edit <room-id of #alias> <veld>=<waarde>` — wijzig een "
|
||||
"veld van een room\n"
|
||||
"* `!rooms remove <room-id of #alias>` — verwijder een room uit de index\n"
|
||||
"* `!rooms refresh` — controleer of rooms nog bestaan en vul "
|
||||
"* `!kamer voegtoe <room-id of #alias>` — voeg een kamer toe aan de index\n"
|
||||
"* `!kamer wijzig <room-id of #alias> <veld>=<waarde>` — wijzig een "
|
||||
"veld van een kamer\n"
|
||||
"* `!kamer verwijder <room-id of #alias>` — verwijder een kamer uit de index\n"
|
||||
"* `!kamer ververs` — controleer of kamers nog bestaan en vul "
|
||||
"ontbrekende avatars aan\n\n"
|
||||
"**Veld bij edit:** `name` (naam), `topic` (omschrijving) of "
|
||||
"**Veld bij wijzig:** `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 "
|
||||
"* `!kamer voegtoe #algemeen:mtux.nl`\n"
|
||||
"* `!kamer wijzig #algemeen:mtux.nl name=Algemeen Overleg`\n"
|
||||
"* `!kamer wijzig #algemeen:mtux.nl topic=` (wist de omschrijving)\n"
|
||||
"* `!kamer verwijder #algemeen:mtux.nl`\n\n"
|
||||
"Alleen moderators (macht ≥ 50) mogen kamers 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 als kaarten; subcommands: over (zoeken), add, edit, remove, refresh, help",
|
||||
name="kamer",
|
||||
aliases=["rooms"],
|
||||
help="Toon de kamer-index als kaarten; subcommando's: over, voegtoe, wijzig, verwijder, ververs, hulp",
|
||||
require_subcommand=False,
|
||||
)
|
||||
async def handle_rooms(self, evt: MessageEvent) -> None:
|
||||
await evt.mark_read()
|
||||
await self._send_list(evt)
|
||||
|
||||
@handle_rooms.subcommand(name="help", help="Toon deze handleiding")
|
||||
@handle_rooms.subcommand(name="hulp", aliases=["help"], help="Toon deze handleiding")
|
||||
async def rooms_help(self, evt: MessageEvent) -> None:
|
||||
await self._send_help(evt)
|
||||
|
||||
@handle_rooms.subcommand(
|
||||
name="over",
|
||||
help="Zoek rooms op naam, alias of omschrijving: !rooms over <zoekterm ...>",
|
||||
help="Zoek kamers op naam, alias of omschrijving: !kamer over <zoekterm ...>",
|
||||
)
|
||||
@command.argument("terms", pass_raw=True, required=True)
|
||||
async def search_over(self, evt: MessageEvent, terms: str) -> None:
|
||||
if not terms.strip():
|
||||
await evt.reply(
|
||||
"Gebruik: `!rooms over <zoekterm ...>` (bijv. `!rooms over linux`).\n"
|
||||
"Gebruik: `!kamer over <zoekterm ...>` (bijv. `!kamer over linux`).\n"
|
||||
"Zoekt op naam, alias en omschrijving; alle termen moeten matchen."
|
||||
)
|
||||
return
|
||||
await self._send_search(evt, terms)
|
||||
|
||||
@handle_rooms.subcommand(
|
||||
name="add",
|
||||
help="Voeg een room toe aan de index: !rooms add <room-id of #alias> (moderator+)",
|
||||
name="voegtoe",
|
||||
aliases=["add"],
|
||||
help="Voeg een kamer toe aan de index: !kamer voegtoe <room-id of #alias> (moderator+)",
|
||||
)
|
||||
@command.argument("room", pass_raw=True, required=True)
|
||||
async def add_room(self, evt: MessageEvent, room: str) -> None:
|
||||
|
|
@ -649,11 +652,11 @@ class RoomsOverviewPlugin(Plugin):
|
|||
return
|
||||
room_id = room if room.startswith("!") else await self._resolve_alias(room)
|
||||
if not room_id:
|
||||
await evt.reply(f"Room `{room}` kon niet gevonden worden.")
|
||||
await evt.reply(f"Kamer `{room}` kon niet gevonden worden.")
|
||||
return
|
||||
info = await self._get_room_info(room_id)
|
||||
if info is None:
|
||||
await evt.reply(f"Room `{room_id}` bestaat niet (of is niet meer bereikbaar).")
|
||||
await evt.reply(f"Kamer `{room_id}` bestaat niet (of is niet meer bereikbaar).")
|
||||
return
|
||||
max_rooms = max(1, int(self.config.get("max_rooms", 300) or 300))
|
||||
count = await self.database.fetchval(
|
||||
|
|
@ -681,13 +684,14 @@ class RoomsOverviewPlugin(Plugin):
|
|||
)
|
||||
target = info["alias"] or room_id
|
||||
await evt.reply(
|
||||
f"Room toegevoegd: **{info['name'] or room_id}** "
|
||||
f"Kamer toegevoegd: **{info['name'] or room_id}** "
|
||||
f"([{target}](https://matrix.to/#/{target}))"
|
||||
)
|
||||
|
||||
@handle_rooms.subcommand(
|
||||
name="edit",
|
||||
help="Wijzig een veld van een room: !rooms edit <room-id of #alias> "
|
||||
name="wijzig",
|
||||
aliases=["edit"],
|
||||
help="Wijzig een veld van een kamer: !kamer wijzig <room-id of #alias> "
|
||||
"<name|topic|alias>=<waarde> (moderator+)",
|
||||
)
|
||||
@command.argument("args", pass_raw=True, required=True)
|
||||
|
|
@ -698,7 +702,7 @@ class RoomsOverviewPlugin(Plugin):
|
|||
parsed = _parse_edit_args(args)
|
||||
if parsed is None:
|
||||
await evt.reply(
|
||||
"Gebruik: `!rooms edit <room-id-of-alias> <name|topic|alias>=<waarde>`\n"
|
||||
"Gebruik: `!kamer wijzig <room-id-of-alias> <name|topic|alias>=<waarde>`\n"
|
||||
"Lege waarde wist het veld (bijv. `alias=`)."
|
||||
)
|
||||
return
|
||||
|
|
@ -712,7 +716,7 @@ class RoomsOverviewPlugin(Plugin):
|
|||
return
|
||||
room_id = room_ref if room_ref.startswith("!") else await self._resolve_alias(room_ref)
|
||||
if not room_id:
|
||||
await evt.reply(f"Room `{room_ref}` kon niet gevonden worden.")
|
||||
await evt.reply(f"Kamer `{room_ref}` kon niet gevonden worden.")
|
||||
return
|
||||
new_value = value or None # lege waarde wist het veld (NULL)
|
||||
column = field_ok[field]
|
||||
|
|
@ -724,7 +728,7 @@ class RoomsOverviewPlugin(Plugin):
|
|||
int(time.time()),
|
||||
)
|
||||
if result != "UPDATE 1":
|
||||
await evt.reply(f"Room `{room_id}` stond niet in de index.")
|
||||
await evt.reply(f"Kamer `{room_id}` stond niet in de index.")
|
||||
return
|
||||
row = await self.database.fetchrow(
|
||||
"SELECT display_name, canonical_alias FROM roomsoverview_rooms "
|
||||
|
|
@ -735,12 +739,13 @@ class RoomsOverviewPlugin(Plugin):
|
|||
shown = new_value if new_value is not None else "(leeg)"
|
||||
field_name = {"name": "naam", "topic": "omschrijving", "alias": "alias"}[field]
|
||||
await evt.reply(
|
||||
f"Room bijgewerkt: **{label}** — {field_name} is nu `{shown}`."
|
||||
f"Kamer bijgewerkt: **{label}** — {field_name} is nu `{shown}`."
|
||||
)
|
||||
|
||||
@handle_rooms.subcommand(
|
||||
name="remove",
|
||||
help="Verwijder een room uit de index: !rooms remove <room-id of #alias> (moderator+)",
|
||||
name="verwijder",
|
||||
aliases=["remove"],
|
||||
help="Verwijder een kamer uit de index: !kamer verwijder <room-id of #alias> (moderator+)",
|
||||
)
|
||||
@command.argument("room", pass_raw=True, required=True)
|
||||
async def remove_room(self, evt: MessageEvent, room: str) -> None:
|
||||
|
|
@ -749,19 +754,20 @@ class RoomsOverviewPlugin(Plugin):
|
|||
return
|
||||
room_id = room if room.startswith("!") else await self._resolve_alias(room)
|
||||
if not room_id:
|
||||
await evt.reply(f"Room `{room}` kon niet gevonden worden.")
|
||||
await evt.reply(f"Kamer `{room}` kon niet gevonden worden.")
|
||||
return
|
||||
result = await self.database.execute(
|
||||
"DELETE FROM roomsoverview_rooms WHERE room_id = $1", room_id
|
||||
)
|
||||
if result == "DELETE 1":
|
||||
await evt.reply(f"Room verwijderd: `{room_id}`.")
|
||||
await evt.reply(f"Kamer verwijderd: `{room_id}`.")
|
||||
else:
|
||||
await evt.reply(f"Room `{room_id}` stond niet in de index.")
|
||||
await evt.reply(f"Kamer `{room_id}` stond niet in de index.")
|
||||
|
||||
@handle_rooms.subcommand(
|
||||
name="refresh",
|
||||
help="Controleer of rooms bestaan en vul ontbrekende avatars aan (moderator+)",
|
||||
name="ververs",
|
||||
aliases=["refresh"],
|
||||
help="Controleer of kamers 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):
|
||||
|
|
@ -770,7 +776,7 @@ class RoomsOverviewPlugin(Plugin):
|
|||
removed, total = await self._validate_all()
|
||||
filled = await self._enrich_avatars_online()
|
||||
await evt.reply(
|
||||
f"Index gecontroleerd: {total - removed} rooms over, "
|
||||
f"{removed} verwijderd (bestonden niet meer). "
|
||||
f"{filled} avatar(s) aangevuld."
|
||||
f"Index gecontroleerd: {total - removed} kamers over, "
|
||||
f"{removed} verwijderd (bestonden niet meer). "
|
||||
f"{filled} avatar(s) aangevuld."
|
||||
)
|
||||
Loading…
Reference in a new issue