Carbon icon indicating copy to clipboard operation
Carbon copied to clipboard

[Feature] Better Chat Filter Support

Open MrShard opened this issue 2 months ago • 0 comments

Feature Request: Better Chat Filter Support

1. Cyrillic Support Out of the Box

Current Issue: Word boundaries \b don't work with Cyrillic characters because regex \w only matches [a-zA-Z0-9_].

Solution: Replace \b with Unicode-aware boundaries:

  • Use (?<![а-яА-ЯёЁ]) and (?![а-яА-ЯёЁ]) for Cyrillic
  • Or add regex flag for Unicode word boundaries (if your regex engine supports it)
  • Consider adding a config option to choose boundary type (ASCII/Unicode/Custom)

Example:

# Instead of this (doesn't work):
"\b(плохое_слово)\b" = "замена"

# Use this:
"(?<![а-яА-ЯёЁ])(плохое_слово)(?![а-яА-ЯёЁ])" = "замена"

2. Commands to Manage Filters

Add commands for dynamic filter management:

/chatfilter add <pattern> <replacement> [--optional]
/chatfilter remove <pattern>
/chatfilter list [--optional]
/chatfilter reload

Examples:

/chatfilter add "bad_word" "good_word"
/chatfilter add "(?<![а-яА-ЯёЁ])(мат)(?![а-яА-ЯёЁ])" "цензура" --optional
/chatfilter remove "bad_word"
/chatfilter list

3. Separate Filter Files

Current Issue: Large filter lists (2000+ lines) bloat the main config file.

Solution: Move filters to separate files:

config/
├── carbonchat.conf          # Main config
├── filters/
│   ├── chat-filter.conf     # Required filters
│   └── optional-filter.conf # Optional filters

Main config reference:

chat-filter = "filters/chat-filter.conf"
optional-chat-filter = "filters/optional-filter.conf"

Benefits:

  • ✅ Cleaner main config
  • ✅ Easier to manage large filter lists
  • ✅ Can share/distribute filter packs separately
  • ✅ Better organization

Summary

These improvements would make CarbonChat much more flexible for non-English servers and users with large filter lists. Current workaround requires manually writing regex patterns, which is error-prone.

MrShard avatar Oct 29 '25 14:10 MrShard