chatfilter: fix filtering self and clan messages with chat icons

This was incorrectly filtering self/clan messages from players with chat
icons due to not stripping the icon tag before matching the player name.
This commit is contained in:
Adam
2020-11-27 15:15:52 -05:00
parent ba25de4bd1
commit 23b7a65c29
2 changed files with 16 additions and 1 deletions

View File

@@ -173,7 +173,7 @@ public class ChatFilterPlugin extends Plugin
case PRIVATECHAT:
case MODPRIVATECHAT:
case FRIENDSCHAT:
if (shouldFilterPlayerMessage(name))
if (shouldFilterPlayerMessage(Text.removeTags(name)))
{
message = censorMessage(name, message);
blockMessage = message == null;

View File

@@ -46,6 +46,7 @@ import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Mock;
import static org.mockito.Mockito.lenient;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
import org.mockito.junit.MockitoJUnitRunner;
@@ -406,4 +407,18 @@ public class ChatFilterPluginTest
assertEquals(1, client.getIntStack()[client.getIntStackSize() - 3]);
assertEquals("<col=000000>testMessage</col> (4)", client.getStringStack()[client.getStringStackSize() - 1]);
}
@Test
public void testChatIcons()
{
when(chatFilterConfig.filteredWords()).thenReturn("test");
// if this test is broken, this stubbing is required to trip the assert
lenient().when(chatFilterConfig.filterType()).thenReturn(ChatFilterType.REMOVE_MESSAGE);
when(friendChatManager.isMember("Lazark")).thenReturn(true);
chatFilterPlugin.updateFilteredPatterns();
ScriptCallbackEvent event = createCallbackEvent("<img=22>Lazark", "test", ChatMessageType.PUBLICCHAT);
chatFilterPlugin.onScriptCallbackEvent(event);
assertEquals(1, client.getIntStack()[client.getIntStackSize() - 3]); // not filtered
}
}