Make the filter valid only for global chat.
Make the filter valid only for global chatSuggestion
Hello,
You didn't choose a license to your code. I'm proposing this change :
private object Filter(Dictionary<string, object> messageData) {
if (WordFilter_Enabled) {
if (!messageData["ChatChannel"].ToString().Equals("Team")) {
IPlayer player = (IPlayer)messageData["Player"];
var message = (string)messageData["Message"];
messageData["Message"] = FilterText(player, message);
return messageData;
}
}
return messageData;
}Quick update about this to fix bug "Causing mute message flooding"What about :
1) Using cancelOption
CancelOption (int/ChatMessage.CancelOptions)
0 - don't cancel
1 - cancel BetterChat handling only; default game chat won't be cancelled
2 - cancel both BetterChat handling & default game chat2) Ignoring teamchatwith !messageData["ChatChannel"].ToString().Equals("Team")
private object Filter(Dictionary<string, object> messageData) {
if (WordFilter_Enabled) {
int cancelOption = (int)messageData["CancelOption"];
if (cancelOption < 2) {
if (!messageData["ChatChannel"].ToString().Equals("Team")) {
IPlayer player = (IPlayer)messageData["Player"];
var message = (string)messageData["Message"];
messageData["Message"] = FilterText(player, message);
return messageData;
}
}
}
return messageData;
}Another quick update, I'm only talking about Rust here (the only game I play :D), I guess cancelOption is a rust only feature.About the mute reason missing :
if (offenseCount >= MuteCount && offenseCount != 0)
{
if (clear == 1 || clear == 3)
{
ClearOffense(player);
}
server.Command("mute", player.Id, $"{TimeToMute}s", "REASON HERE");
Mutes(player);
}