* **Smaxx** - Regular contributor and translator
* **SLATE** - Added graphical settings menu for SpamFilter.
* **The creators of the ESOHead Addon** - I used that addon's code as an example to get started writing Lua.
* **The Creators of wiki.esoui.com** - Awesome documentation on the ESO API.
Extract the SpamFilter directory into your ESO AddOns directory.
If ESO is already running, enter '/reloadui' into chat.
###What this addon does
SpamFilter filters zone, say, and yell channels and in-game mail in ESO's in-game chat for gold spammers, and automatically adds them to your ignore list. Don't worry though - people in your friends list are automatically white-listed, so you don't have to worry about accidentally ignoring a friend.
SpamFilter uses filters to detect gold spammers. Regular chatter won't get anyone ignored by accident, unless they indeed write down one of the URLs on the blacklist. Skip the rest of this section unless you're really interested in the technical realization/background.
These are either plain text (like partial URLs) or complex patterns utilizing Lua's regular expression patterns. More information can be found in (Lua User's Patterns Tutorial)[http://lua-users.org/wiki/PatternsTutorial]. They are very similar to Perl's and ECMA's regular expressions, though they have a few notable limitations by comparison:
- You cannot match repeating capture groups (e.g. - (group)* will not work)
- There is no "or" operator
- The escape character is % instead of \
At the time of this writing, SpamFilter comes with 6 built-in filters for the most common spammers encountered so far:
If these filters do not suit you, they may be turned off as a whole in the **Settings** menu or with the **/sfdefault** slash command.
You can also add your own custom filters with the **/sfadd** command:
/sfadd MyFilter [e3]vilg[o0][l1]d
This command will add a filter by the name **MyFilter**, ignoring anyone who says anything containing a match for `[e3]vilg[o0][l1]d`(like `evilgold` or even `3vilg01d`). Note that filter names may **not** contain whitespaces! Filter definitions may do so, though. Also, do not wrap your filter name or definition in quotes (unless you want quotes to be part of the filter name or definition). Lastly, all filters should be written in lowercase (with the exception of inverted character classes, such as %S or %W).
###Full Command List
SpamFilter has a few slash commands to allow you to manipulate and view the current configuration. Note that you don't have to use them. Basic functionality is accessible through the game's **Settings** menu.
* **/sfdefault <on|off>** - Explicitly turns default filters on or off.
* **/sftest <name> <test phrase>** - Tests to see if **<test phrase>** is a match for the custom rule, **<name>**.
* **/sfmaxlen** - Toggles whether or not the max message length filter is used (default = on).
* **/sfmaxlen <on|off>** - Explicitly turns the max message length filter on or off.
* **/sfmaxlen <number>** - Sets the max message length (in characters).
-API Version number update.
-/sftest now shows the normalized message that is used against the rule.
-Added unignore button in settings - clears ignore list.
-Hopefully addressed hard crashes.
-Added guild invite filtering.
-Fixed color stripping at the beginning of a message.
-/sfadd now checks that both name and filter definition are present.
-Added color filtering.
-Many heuristic and default filter updates.
-Added libChat to allow for compatibility with pChat addon.
-Can now toggle whether or not to add offenders to the built in ignore list. This toggle does not affect mail - mail offenders will always be added to the ignore list.
-Fixed issue where flood gate and message length filters were getting applied to mail items.
-Adjustments to heuristic filtering.
-Mail Scanning: Scans your mail using existing filters when you open your mailbox. NOTE! Scans do not auto-delete mail so as to still allow reporting the player with F1
-Truncation: You can now set SpamFilter to truncate or completely ignore messages that trigger rules. Default is "Truncate."
-Heuristical Scanning (Experimental): New experimental feature that should catch most spammers based on message scoring. Might still be a bit over or under-zealous. Use at your own risk.
-Possible fix for crashes due to accented characters in patterns.
-Fixed German translations.
-Strings now have ESO chat formatting stripped before being compared against filters and being checked for length.
-Added flood gate filter. This will block anyone who sends more than x messages in t seconds. Defaults for x and t are 3 and 3 respectively. This filter can be edited and/or disabled from the settings menu.
-Added message length filter. This will block anyone who sends a message longer than 750 characters. This filter can be edited and/or disabled from the settings menu.
-Added "/sftest" command. This will allow you to to test your custom filters. Syntax is "/sftest <name> <test phrase>"
-Fixed issue where filters would not be saved properly if they began or ended with square brackets.
-New auto-ignored players should now have a note attached to their ignore record stating the rule that triggered the ignore.
-Custom filters can now be edited from the settings menu.
-Renamed license and README to .md files so as not to confuse ESO.
-German localization added, courtesy of Smaxx (Thank you Smaxx!)
-Copy of GPLv3 added to the package.
-Project description changed to match the README.
-Slight modifications to slash commands.
-Integrated SpamFilter Menu Patch by SLATE (Thank you SLATE!)
-Incoming chat messages are converted to lower-case before being matched. This is to alleviate the need for every letter being an upper or lower character class. This has the side effect of necessitating that all patterns be written in lower case.
-Fixed persistence bug.
-Removed /sfreset. It doesn't work right with the persistence fix. That's ok though because for whatever reason the default filter is *always* loaded when the plugin is loaded. Still haven't figured this part out yet.
-Refactored to allow for easier localization.
-Improved default filter.
-Friends will no longer be ignored.
-Fixed issue with leading/trailing whitespace on filter definitions.