chat filter: add clan chat

This commit is contained in:
Adam
2021-05-26 15:22:08 -04:00
parent 7de3b61860
commit 5f9ccd2538
2 changed files with 38 additions and 6 deletions

View File

@@ -110,11 +110,22 @@ public interface ChatFilterConfig extends Config
return false; return false;
} }
@ConfigItem(
keyName = "filterClanChat",
name = "Filter clan Chat Members",
description = "Filter your clan chat members' messages",
position = 7
)
default boolean filterClanChat()
{
return false;
}
@ConfigItem( @ConfigItem(
keyName = "filterLogin", keyName = "filterLogin",
name = "Filter Logged In/Out Messages", name = "Filter Logged In/Out Messages",
description = "Filter your private chat to remove logged in/out messages", description = "Filter your private chat to remove logged in/out messages",
position = 7 position = 8
) )
default boolean filterLogin() default boolean filterLogin()
{ {
@@ -125,7 +136,7 @@ public interface ChatFilterConfig extends Config
keyName = "filterGameChat", keyName = "filterGameChat",
name = "Filter Game Chat", name = "Filter Game Chat",
description = "Filter your game chat messages", description = "Filter your game chat messages",
position = 8 position = 9
) )
default boolean filterGameChat() default boolean filterGameChat()
{ {
@@ -136,7 +147,7 @@ public interface ChatFilterConfig extends Config
keyName = "collapseGameChat", keyName = "collapseGameChat",
name = "Collapse Game Chat", name = "Collapse Game Chat",
description = "Collapse duplicate game chat messages into a single line", description = "Collapse duplicate game chat messages into a single line",
position = 9 position = 10
) )
default boolean collapseGameChat() default boolean collapseGameChat()
{ {
@@ -147,7 +158,7 @@ public interface ChatFilterConfig extends Config
keyName = "collapsePlayerChat", keyName = "collapsePlayerChat",
name = "Collapse Player Chat", name = "Collapse Player Chat",
description = "Collapse duplicate player chat messages into a single line", description = "Collapse duplicate player chat messages into a single line",
position = 10 position = 11
) )
default boolean collapsePlayerChat() default boolean collapsePlayerChat()
{ {
@@ -158,7 +169,7 @@ public interface ChatFilterConfig extends Config
keyName = "maxRepeatedPublicChats", keyName = "maxRepeatedPublicChats",
name = "Repeat filter", name = "Repeat filter",
description = "Block player chat message if repeated this many times. 0 is off", description = "Block player chat message if repeated this many times. 0 is off",
position = 11 position = 12
) )
default int maxRepeatedPublicChats() default int maxRepeatedPublicChats()
{ {

View File

@@ -53,6 +53,7 @@ import net.runelite.api.Client;
import net.runelite.api.FriendsChatManager; import net.runelite.api.FriendsChatManager;
import net.runelite.api.MessageNode; import net.runelite.api.MessageNode;
import net.runelite.api.Player; import net.runelite.api.Player;
import net.runelite.api.clan.ClanChannel;
import net.runelite.api.events.ChatMessage; import net.runelite.api.events.ChatMessage;
import net.runelite.api.events.OverheadTextChanged; import net.runelite.api.events.OverheadTextChanged;
import net.runelite.api.events.ScriptCallbackEvent; import net.runelite.api.events.ScriptCallbackEvent;
@@ -170,6 +171,8 @@ public class ChatFilterPlugin extends Plugin
case PRIVATECHAT: case PRIVATECHAT:
case MODPRIVATECHAT: case MODPRIVATECHAT:
case FRIENDSCHAT: case FRIENDSCHAT:
case CLAN_CHAT:
case CLAN_GUEST_CHAT:
if (shouldFilterPlayerMessage(Text.removeTags(name))) if (shouldFilterPlayerMessage(Text.removeTags(name)))
{ {
message = censorMessage(name, message); message = censorMessage(name, message);
@@ -271,7 +274,8 @@ public class ChatFilterPlugin extends Plugin
boolean isMessageFromSelf = playerName.equals(client.getLocalPlayer().getName()); boolean isMessageFromSelf = playerName.equals(client.getLocalPlayer().getName());
return !isMessageFromSelf && return !isMessageFromSelf &&
(config.filterFriends() || !client.isFriended(playerName, false)) && (config.filterFriends() || !client.isFriended(playerName, false)) &&
(config.filterFriendsChat() || !isFriendsChatMember(playerName)); (config.filterFriendsChat() || !isFriendsChatMember(playerName)) &&
(config.filterClanChat() || !isClanChatMember(playerName));
} }
private boolean isFriendsChatMember(String name) private boolean isFriendsChatMember(String name)
@@ -280,6 +284,23 @@ public class ChatFilterPlugin extends Plugin
return friendsChatManager != null && friendsChatManager.findByName(name) != null; return friendsChatManager != null && friendsChatManager.findByName(name) != null;
} }
private boolean isClanChatMember(String name)
{
ClanChannel clanChannel = client.getClanChannel();
if (clanChannel != null && clanChannel.findMember(name) != null)
{
return true;
}
clanChannel = client.getGuestClanChannel();
if (clanChannel != null && clanChannel.findMember(name) != null)
{
return true;
}
return false;
}
String censorMessage(final String username, final String message) String censorMessage(final String username, final String message)
{ {
String strippedMessage = jagexPrintableCharMatcher.retainFrom(message) String strippedMessage = jagexPrintableCharMatcher.retainFrom(message)