Make the filter valid only for global chatSuggestion
Make the filter valid only for global chat.

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 chat​
2) Ignoring teamchat
with !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);
            }​