bug: channel_keywords-Filter wird in execute_commands ignoriert #3

Closed
opened 2026-03-13 06:34:12 +01:00 by ppfeiffer · 0 comments
Owner

Problem

Die Konfigurationsoption [Channels] channel_keywords soll einschränken, welche Befehle in Kanälen erlaubt sind. Diese Prüfung findet in check_keywords() statt – in execute_commands() fehlt sie jedoch vollständig.

Datei: modules/command_manager.pyexecute_commands()

Ablauf des Fehlers

  1. Benutzer sendet wx in einem Kanal
  2. check_keywords() blockt wx korrekt via _is_channel_trigger_allowed() → kein Eintrag in keyword_matches
  3. plugin_command_with_response_matched bleibt False
  4. execute_commands() wird aufgerufen, findet wx via should_execute()keine _is_channel_trigger_allowed()-Prüfung
  5. wx wird trotzdem ausgeführt ✗

Reproduzierbar mit

[Channels]
channel_keywords = help,ping

Dann wx in einem Kanal senden → Wetter-Antwort erscheint, obwohl wx nicht in channel_keywords steht.

Fix

In execute_commands() direkt nach dem should_execute()-Check einfügen:

if not self._is_channel_trigger_allowed(command_name, message):
    continue

Betroffene Zeile: execute_commands() nach if command.should_execute(message):

## Problem Die Konfigurationsoption `[Channels] channel_keywords` soll einschränken, welche Befehle in Kanälen erlaubt sind. Diese Prüfung findet in `check_keywords()` statt – in `execute_commands()` fehlt sie jedoch vollständig. **Datei:** `modules/command_manager.py` → `execute_commands()` ## Ablauf des Fehlers 1. Benutzer sendet `wx` in einem Kanal 2. `check_keywords()` blockt `wx` korrekt via `_is_channel_trigger_allowed()` → kein Eintrag in `keyword_matches` 3. `plugin_command_with_response_matched` bleibt `False` 4. `execute_commands()` wird aufgerufen, findet `wx` via `should_execute()` – **keine** `_is_channel_trigger_allowed()`-Prüfung 5. `wx` wird trotzdem ausgeführt ✗ ## Reproduzierbar mit ```ini [Channels] channel_keywords = help,ping ``` Dann `wx` in einem Kanal senden → Wetter-Antwort erscheint, obwohl `wx` nicht in `channel_keywords` steht. ## Fix In `execute_commands()` direkt nach dem `should_execute()`-Check einfügen: ```python if not self._is_channel_trigger_allowed(command_name, message): continue ``` **Betroffene Zeile:** `execute_commands()` nach `if command.should_execute(message):`
Sign in to join this conversation.
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
ppfeiffer/meshcore-bot#3
No description provided.