From dbb4e027af45dc7cde93d1f45deb73c42e37a40a Mon Sep 17 00:00:00 2001 From: eddy Date: Sat, 5 Sep 2026 17:25:30 +0200 Subject: [PATCH] v1.1.2: set-filter alleen wissen met expliciet 'clear' - lege !rss set-filter wist NOOIT het filter, toont usage + huidig filter - verwijderen vereist expliciet: !rss set-filter clear|none|off|remove - voorkomt onbedoeld filterverlies --- buzzrss/bot.py | 36 ++++++++++++++++++++++++++---------- maubot.yaml | 2 +- 2 files changed, 27 insertions(+), 11 deletions(-) diff --git a/buzzrss/bot.py b/buzzrss/bot.py index d418d77..c3eda54 100644 --- a/buzzrss/bot.py +++ b/buzzrss/bot.py @@ -407,10 +407,10 @@ class RSSBot(Plugin): await evt.reply(f"Subscribed to {feed_info}") @rss.subcommand( - "set-filter", aliases=("f",), help="Set the global match filter (whitelist regex) for all feeds." + "set-filter", aliases=("f",), help="Set the global match filter: !rss set-filter | !rss set-filter clear" ) - @command.argument("match_filter", "match filter", pass_raw=True) - async def set_filter(self, evt: MessageEvent, match_filter: str) -> None: + @command.argument("match_filter", "match filter", pass_raw=True, required=False) + async def set_filter(self, evt: MessageEvent, match_filter: str = "") -> None: if evt.sender in self.config["admins"]: pass elif not self.config["allow_filter"]: @@ -418,19 +418,35 @@ class RSSBot(Plugin): return elif not await self.can_manage(evt): return + if not match_filter: + # Lege aanroep: nooit het filter wissen. Toon usage + huidige filter. + f = self.config["match_filter"] + if f: + await evt.reply( + f"Usage: `!rss set-filter ` or `!rss set-filter clear`\n\n" + f"**Current filter:**\n```\n{f}\n```" + ) + else: + await evt.reply( + "Usage: `!rss set-filter ` or `!rss set-filter clear`\n\n" + "No filter is currently set (all posts are sent)" + ) + return + if match_filter.strip().lower() in ("clear", "none", "off", "remove"): + self.config["match_filter"] = "" + self.config.save() + await evt.reply("Global filter removed (all posts will be sent)") + return try: re.compile(match_filter) except re.error: - await evt.reply(f"Filter is not a valid regular expression") + await evt.reply("Filter is not a valid regular expression") return self.config["match_filter"] = match_filter self.config.save() - if match_filter: - await evt.reply( - f"Global filter updated: only posts matching `{match_filter}` will be sent" - ) - else: - await evt.reply("Global filter removed (all posts will be sent)") + await evt.reply( + f"Global filter updated: only posts matching `{match_filter}` will be sent" + ) @rss.subcommand( "filter", aliases=("show-filter", "get-filter"), help="Show the current global match filter." diff --git a/maubot.yaml b/maubot.yaml index b2efc06..a7b96d4 100644 --- a/maubot.yaml +++ b/maubot.yaml @@ -1,5 +1,5 @@ id: nl.eddydevink.rss -version: 1.1.1 +version: 1.1.2 modules: - buzzrss main_class: RSSBot