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
This commit is contained in:
eddy 2026-09-05 17:25:30 +02:00
commit dbb4e027af
2 changed files with 27 additions and 11 deletions

View file

@ -407,10 +407,10 @@ class RSSBot(Plugin):
await evt.reply(f"Subscribed to {feed_info}") await evt.reply(f"Subscribed to {feed_info}")
@rss.subcommand( @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 <regex> | !rss set-filter clear"
) )
@command.argument("match_filter", "match filter", pass_raw=True) @command.argument("match_filter", "match filter", pass_raw=True, required=False)
async def set_filter(self, evt: MessageEvent, match_filter: str) -> None: async def set_filter(self, evt: MessageEvent, match_filter: str = "") -> None:
if evt.sender in self.config["admins"]: if evt.sender in self.config["admins"]:
pass pass
elif not self.config["allow_filter"]: elif not self.config["allow_filter"]:
@ -418,19 +418,35 @@ class RSSBot(Plugin):
return return
elif not await self.can_manage(evt): elif not await self.can_manage(evt):
return 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 <regex>` or `!rss set-filter clear`\n\n"
f"**Current filter:**\n```\n{f}\n```"
)
else:
await evt.reply(
"Usage: `!rss set-filter <regex>` 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: try:
re.compile(match_filter) re.compile(match_filter)
except re.error: 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 return
self.config["match_filter"] = match_filter self.config["match_filter"] = match_filter
self.config.save() self.config.save()
if match_filter:
await evt.reply( await evt.reply(
f"Global filter updated: only posts matching `{match_filter}` will be sent" f"Global filter updated: only posts matching `{match_filter}` will be sent"
) )
else:
await evt.reply("Global filter removed (all posts will be sent)")
@rss.subcommand( @rss.subcommand(
"filter", aliases=("show-filter", "get-filter"), help="Show the current global match filter." "filter", aliases=("show-filter", "get-filter"), help="Show the current global match filter."

View file

@ -1,5 +1,5 @@
id: nl.eddydevink.rss id: nl.eddydevink.rss
version: 1.1.1 version: 1.1.2
modules: modules:
- buzzrss - buzzrss
main_class: RSSBot main_class: RSSBot