mirror of
https://github.com/agessaman/meshcore-bot.git
synced 2026-09-16 04:45:34 +00:00
Keep the disabled-command fallback in one place. A disabled command still matches; can_execute is what holds it back, and the dispatcher continues past it so another command's alias can claim the trigger. The per-command enabled guards in matches_keyword were a second mechanism for a problem already solved once, and one every command would have to repeat, so drop them along with PathCommand's matches_keyword override entirely. Restore control-character tolerance in the test command. Matching runs against clean_content-normalized text again, so a garbled "test" still matches. A test is exactly the message someone sends when their link is marginal. The cleaned text only sticks when the test command claims the message, since matching runs early in the command scan and collapsing whitespace on another command's free-form argument is not its business. Make enable_p_shortcut = false actually work. Appending "p" to the inherited class list left it on PathCommand.keywords for every instance built afterwards, so a reload with the shortcut off still answered "p". Have split_trigger_and_args honour the configured command prefix instead of stripping a leading "!" unconditionally, and match word by word rather than slicing the lowered copy by keyword length, which cuts the args in the wrong place when str.lower() changes length for a non-ASCII alias. Mention gating now applies to the test command, which the bespoke matcher had skipped: "test @[Bob]" in a channel no longer gets an ack.