<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://graalonline.net/index.php?action=history&amp;feed=atom&amp;title=Creation%2FDev%2FWord_Filter</id>
	<title>Creation/Dev/Word Filter - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://graalonline.net/index.php?action=history&amp;feed=atom&amp;title=Creation%2FDev%2FWord_Filter"/>
	<link rel="alternate" type="text/html" href="https://graalonline.net/index.php?title=Creation/Dev/Word_Filter&amp;action=history"/>
	<updated>2026-04-09T23:23:48Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.39.4</generator>
	<entry>
		<id>https://graalonline.net/index.php?title=Creation/Dev/Word_Filter&amp;diff=15170&amp;oldid=prev</id>
		<title>Pooper200000 at 19:49, 16 February 2010</title>
		<link rel="alternate" type="text/html" href="https://graalonline.net/index.php?title=Creation/Dev/Word_Filter&amp;diff=15170&amp;oldid=prev"/>
		<updated>2010-02-16T19:49:30Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 15:49, 16 February 2010&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l1&quot;&gt;Line 1:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 1:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;[[Category:Scripting Reference]][[Category:Scripting Tutorials]]&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;=Word Filter=&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;=Word Filter=&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Graal's built-in word filter allows you to effectively and elaborately check many forms of chat to detect words which may be insulting, crude or against the rules.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Graal's built-in word filter allows you to effectively and elaborately check many forms of chat to detect words which may be insulting, crude or against the rules.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;

&lt;!-- diff cache key graalnet_wikidb:diff::1.12:old-10647:rev-15170 --&gt;
&lt;/table&gt;</summary>
		<author><name>Pooper200000</name></author>
	</entry>
	<entry>
		<id>https://graalonline.net/index.php?title=Creation/Dev/Word_Filter&amp;diff=10647&amp;oldid=prev</id>
		<title>Tigairius: /* Completing Your Word Filter */</title>
		<link rel="alternate" type="text/html" href="https://graalonline.net/index.php?title=Creation/Dev/Word_Filter&amp;diff=10647&amp;oldid=prev"/>
		<updated>2008-04-01T19:52:40Z</updated>

		<summary type="html">&lt;p&gt;&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;Completing Your Word Filter&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 15:52, 1 April 2008&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l103&quot;&gt;Line 103:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 103:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;RULE&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;RULE&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;CHECK pm toall chat nick&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;CHECK pm toall chat nick&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;MATCH &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;b?tch&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;MATCH &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;bitch&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;PRECISION 100%&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;PRECISION 100%&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;WORDPOSITION part&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;WORDPOSITION part&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;WARNMESSAGE Please do not use that language!&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;ACTION log replace&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;ACTION log replace&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;RULEEND&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;RULEEND&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;

&lt;!-- diff cache key graalnet_wikidb:diff::1.12:old-10646:rev-10647 --&gt;
&lt;/table&gt;</summary>
		<author><name>Tigairius</name></author>
	</entry>
	<entry>
		<id>https://graalonline.net/index.php?title=Creation/Dev/Word_Filter&amp;diff=10646&amp;oldid=prev</id>
		<title>Tigairius: New page: =Word Filter= Graal's built-in word filter allows you to effectively and elaborately check many forms of chat to detect words which may be insulting, crude or against the rules.  ==Purpose...</title>
		<link rel="alternate" type="text/html" href="https://graalonline.net/index.php?title=Creation/Dev/Word_Filter&amp;diff=10646&amp;oldid=prev"/>
		<updated>2008-04-01T18:53:40Z</updated>

		<summary type="html">&lt;p&gt;New page: =Word Filter= Graal&amp;#039;s built-in word filter allows you to effectively and elaborately check many forms of chat to detect words which may be insulting, crude or against the rules.  ==Purpose...&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;=Word Filter=&lt;br /&gt;
Graal's built-in word filter allows you to effectively and elaborately check many forms of chat to detect words which may be insulting, crude or against the rules.&lt;br /&gt;
&lt;br /&gt;
==Purpose of the Word Filter==&lt;br /&gt;
The word filter is part of the game server and can be used by administrators&lt;br /&gt;
to prevent the usage of rude words in messages and names. It will not work for&lt;br /&gt;
100% of all cases, but it will help to find people that use those words, and&lt;br /&gt;
if users trick the system they know that they do something that is against the&lt;br /&gt;
rules and will possibly be jailed or banned.&lt;br /&gt;
&lt;br /&gt;
The word filter allows different types of actions: it can log the usage of&lt;br /&gt;
words, tell administrators that someone used a filtered word, replace the word&lt;br /&gt;
with stars, block the message and warn the user. It's planned that you can directly send someone to jail or possibly ban someone if the word filter has detected&lt;br /&gt;
something, that will mainly be used for preventing trial players to flood the&lt;br /&gt;
servers with unwelcome messages.&lt;br /&gt;
&lt;br /&gt;
==Configuration Files==&lt;br /&gt;
By default the filter rules are listed in the file 'wordfilter/rules.txt'.&lt;br /&gt;
Modify that file to change the word filter rules, it will automatically reload&lt;br /&gt;
the rules when you update the file. The filter log is saved to 'wordfiler/log.txt'.&lt;br /&gt;
&lt;br /&gt;
==Global Options==&lt;br /&gt;
In the rules file you can add following lines to change parameters that apply&lt;br /&gt;
for all rules or are used when you don't specify the parameter in the rule&lt;br /&gt;
itself:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
WARNMESSAGE message&lt;br /&gt;
  sets the warn message that is displayed when &lt;br /&gt;
  the player uses a bad word and there is a rule&lt;br /&gt;
  that matches a word in the text and has 'warn' as&lt;br /&gt;
  action&lt;br /&gt;
SHOWWORDSTORC true/false&lt;br /&gt;
  enables/disables the display of the words that matched,&lt;br /&gt;
  this is by default turned off to not annoy the staff&lt;br /&gt;
  if it's turned off then you will only see the name &lt;br /&gt;
  of the player in the message that is sent to RCs&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Rules==&lt;br /&gt;
You can define several rules.&lt;br /&gt;
A rule always starts with a &lt;br /&gt;
RULE&lt;br /&gt;
line and ends with a&lt;br /&gt;
RULEEND &lt;br /&gt;
line.&lt;br /&gt;
&lt;br /&gt;
Between those two lines you can specify the options for the rule. Following&lt;br /&gt;
options can be set:&lt;br /&gt;
&lt;br /&gt;
MATCH word&lt;br /&gt;
  defines the word to look for, format:&lt;br /&gt;
    - '?'                  : all characters match&lt;br /&gt;
    - upper case           : character must match exactly&lt;br /&gt;
    - lower case character : will be counted when it matches&lt;br /&gt;
        and at the end checked if the number of characters that&lt;br /&gt;
        match is higher or equal to the requested precision&lt;br /&gt;
  You can define more than one match per rule. Spaces&lt;br /&gt;
  and some other characters are overread to allow easier&lt;br /&gt;
  matching.&lt;br /&gt;
  examples: F??K, BitcH &lt;br /&gt;
CHECK chat pm toall nick&lt;br /&gt;
  list of text types to check, separated by spaces&lt;br /&gt;
  the actions vary a little bit from type to type -&lt;br /&gt;
  people that send bad PMs are warned by admin message,&lt;br /&gt;
  otherwise it changes the chat text of the player&lt;br /&gt;
WORDPOSITION full/start/part&lt;br /&gt;
  says where the word must be appear in the text&lt;br /&gt;
  to be recognized, 'full' means the rule only&lt;br /&gt;
  matches full words, 'start' means the rule will&lt;br /&gt;
  check the start of words if they match, 'part'&lt;br /&gt;
  means it checks everything&lt;br /&gt;
PRECISION matchcharacters/precision%&lt;br /&gt;
  you can either give a number of characters that&lt;br /&gt;
  must match to fire the action, or give a&lt;br /&gt;
  percentage, add '%' at the end of that then&lt;br /&gt;
ACTION log tellrc replace warn jail ban&lt;br /&gt;
  list of actions to do when the word matches, separated by spaces&lt;br /&gt;
  'log' will log to wordfilter/log.txt, 'tellrc' will&lt;br /&gt;
  send a warning on the RC-chat, 'replace' will replace&lt;br /&gt;
  the found words with stars, 'warn' will set the chat text &lt;br /&gt;
  of the player to the warn message or send an admin message&lt;br /&gt;
  when the message was a PM, the PM will not be sent in&lt;br /&gt;
  that case; 'jail' and 'ban' are planned for the future&lt;br /&gt;
WARNMESSAGE message&lt;br /&gt;
  sets the warning message&lt;br /&gt;
&lt;br /&gt;
==Completing Your Word Filter==&lt;br /&gt;
After you have grasped the concept of how the word filter works, you can begin carefully crafting a word filter for ''your'' server.&lt;br /&gt;
A very basic word filter might look like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
WARNMESSAGE Your crude language has been logged!&lt;br /&gt;
SHOWWORDSTORC true&lt;br /&gt;
&lt;br /&gt;
RULE&lt;br /&gt;
CHECK pm toall chat nick&lt;br /&gt;
MATCH f??k&lt;br /&gt;
PRECISION 100%&lt;br /&gt;
WORDPOSITION part&lt;br /&gt;
WARNMESSAGE Please do not use that language!&lt;br /&gt;
ACTION log tellrc warn&lt;br /&gt;
RULEEND&lt;br /&gt;
&lt;br /&gt;
RULE&lt;br /&gt;
CHECK pm toall chat nick&lt;br /&gt;
MATCH b?tch&lt;br /&gt;
PRECISION 100%&lt;br /&gt;
WORDPOSITION part&lt;br /&gt;
WARNMESSAGE Please do not use that language!&lt;br /&gt;
ACTION log replace&lt;br /&gt;
RULEEND&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
RULE&lt;br /&gt;
CHECK pm toall chat nick&lt;br /&gt;
MATCH graalhack&lt;br /&gt;
PRECISION 100%&lt;br /&gt;
WORDPOSITION start&lt;br /&gt;
WARNMESSAGE Please don't discuss hacking here.&lt;br /&gt;
ACTION log warn&lt;br /&gt;
RULEEND&lt;br /&gt;
&lt;br /&gt;
RULE&lt;br /&gt;
CHECK chat pm nick toall&lt;br /&gt;
MATCH homo&lt;br /&gt;
PRECISION 100%&lt;br /&gt;
WORDPOSITION full&lt;br /&gt;
ACTION log replace&lt;br /&gt;
RULEEND&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
You should generally use the word position &amp;quot;full&amp;quot; for smaller words in case half of the word is part of another word and the other half is part of a new word, for example &amp;quot;of kingdom&amp;quot; has &amp;quot;fking&amp;quot; in it, so if we were testing for &amp;quot;fking&amp;quot; we would want to do &amp;quot;full.&amp;quot; The word filter is based on commands, so remember that logging the action should always come before replacing or warning the person. If you replace the word before you log it (&amp;quot;ACTION replace log&amp;quot;) your log file will show the replaced word, rather than the original word.&lt;/div&gt;</summary>
		<author><name>Tigairius</name></author>
	</entry>
</feed>