About MyChat
MyChat – a powerful and versatile chat system for players, offering extensive customization and exciting features that introduce new ways to communicate and interact on your server.
Functions:
1. Chat Customization
- Prefixes, colors, and formatting
- CAPS lock prevention (hello everyone. THIS IS MY CHAT PLUGIN. it works perfectly. → Hello everyone. This is my chat plugin. It works perfectly.)
- Forbidden words and nickname replacement
- Temporary chat blocks and player-specific mutes
2. Mentions & Private Messaging
- Mention players (@player)
- Mention all players (@everyone) – requires permission
- Mention groups – requires permission
- Send private messages (/msg)
- Quickly reply to the last player you messaged.
- Sound notifications for messages and mentions
- Personal Rename System
- Group Messaging by Status
3. Chat Moderation & Anti-Spam
- Chat and voice mute (/mute <chat/voice> <sec> <reason>)
- Temporary timeouts to prevent spam
- Automatic message replacement for bad words
- Log all actions to Discord (messages, mutes, blocked words)
4. Dynamic Messages & Auto Responses
- Custom chat commands with variables (online count, joining players, etc.)
- Automatic messages on player join/leave
- Auto-responder for specific keywords
- Timed messages in chat
Commands:
- /chat - open the settings interface
- /msg <player> <message> – private message
- /reply – quickly respond to the last player you talked to
- /mute <player> <chat/voice> <time> <reason> – mute player
- /unmute <player> <chat/voice> <reason> – unmute player
- /rename <player> <name> – assign a custom name visible only to you
- /rename <player> – remove your custom name for that player
- /<group.name> <message> - send a message to all players with a specific status
Permissions:
- mychat.admin – access to administrative commands (mute, unmute, etc.)
- mychat.mention.everyone – allows mentioning all players with '@everyone'
Configuration:
{ "Settings: General": { "Notification type (1 - chat | 2 - toast | 3 - both)": 3, "Chat message format": "%info%: %message%", "Apply text typography corrections": true, "Message send cooldown (sec)": 8, "Chat Commands": { "Commands to open the chat interface": [ "chat", "cs" ], "Commands to send private messages": [ "pm", "msg", "privatemessage" ], "Commands to reply or repeat the last message": [ "r", "reply" ], "Commands to mute players": [ "mute" ], "Commands to unmute players": [ "unmute" ], "Commands to set a custom nickname": [ "rename", "customname" ] } }, "Settings: Mentions": { "Enable player mentions": true, "Mention sound": "assets/bundled/prefabs/fx/notice/loot.drag.dropsuccess.fx.prefab", "Everyone mention": { "Trigger words for everyone mention": [ "everyone", "all", "все" ], "Mention color": "#B8A9C9", "Sound notification": "assets/bundled/prefabs/fx/notice/loot.drag.dropsuccess.fx.prefab" } }, "Settings: Broadcast": { "Random join messages": { "Avatar (SteamID)": 0, "Sound notification": null, "Messages": { "en": [ "%nick% got into this server from %country%", "%nick% crashed on server from %country%" ], "ru": [ "%nick% залетел на этот сервер из %country%", "%nick% упал на сервер из %country%" ] } }, "Random leave messages": { "Avatar (SteamID)": 0, "Sound notification": null, "Messages": { "en": [ "%nick% is out of the game :(", "%nick% dropped from the server" ], "ru": [ "%nick% вышел из игры :(", "%nick% выпал с сервера" ] } }, "Timed broadcast messages (seconds)": { "3600": { "Avatar (SteamID)": 0, "Sound notification": "assets/bundled/prefabs/fx/invite_notice.prefab", "Messages": { "en": [ "We are waiting for you in our store - <color=#84B4DD>server.store</color>", "Tired of pharma?\nSo why haven't you logged into - <color=#84B4DD>server.store</color> yet" ], "ru": [ "Ждем вас в нашем магазине - <color=#84B4DD>server.store</color>", "Устал от фарма?\nТак почему же ты еще не зашел на - <color=#84B4DD>server.store</color>" ] } } } }, "Settings: Auto-reply": { "0": { "Trigger words": [ "wipe", "вайп" ], "Reply": { "en": { "Avatar (SteamID)": 0, "Message": "The wipe will take place on October 7." }, "ru": { "Avatar (SteamID)": 0, "Message": "Вайп произойдет 7 октября." } } }, "1": { "Trigger words": [ "admin", "moder", "админ", "модер" ], "Reply": { "en": { "Avatar (SteamID)": 0, "Message": "The administration is always watching you!" }, "ru": { "Avatar (SteamID)": 0, "Message": "Администрация всегда наблюдает за вами!" } } } }, "Settings: Blocked words": { "Mask for blocked words": "***", "Block links in chat": true, "Allowed links": [ "server.store", "server.stats" ], "Forbidden words in nicknames": [ "negr", "faggot", "idiot" ], "Forbidden words in messages": [ "negr", "faggot", "idiot" ] }, "Settings: Custom commands": { "info": { "en": { "Avatar (SteamID)": 0, "Message": "Welcome %nick% to our server!\nYou are connecting from %country%." }, "ru": { "Avatar (SteamID)": 0, "Message": "Добро пожаловать, %nick%, на наш сервер!\nВы зашли из %country%." } }, "pop": { "en": { "Avatar (SteamID)": 0, "Message": "There are %online% active players online, %sleepers% sleeping.\n%incoming% joining.\nYour ping: %ping% ms." }, "ru": { "Avatar (SteamID)": 0, "Message": "На сервере сейчас %online% активных игроков, %sleepers% спят.\nЗаходят %incoming%.\nВаш пинг: %ping% мс." } } }, "Settings: Sounds": { "Chat mention sound": "assets/bundled/prefabs/fx/notice/loot.drag.dropsuccess.fx.prefab", "Private message sound": "assets/bundled/prefabs/fx/notice/loot.drag.dropsuccess.fx.prefab" }, "Settings: Statuses": { "default": { "Prefix types": [ "[%prefix%]" ], "Prefixes": [ "PLAYER" ], "Prefix colors": [ "#BBC47E" ], "Nickname colors": [ "#FFFFFF" ], "Message colors": [ "#FFFFFF" ], "Personal mention color": "#84B4DD", "Permission for group broadcast messages": "mychat.moder", "Group mention settings": { "Trigger words for group mention": [ "default" ], "Mention color": "#BBC47E", "Sound notification": "assets/bundled/prefabs/fx/notice/loot.drag.dropsuccess.fx.prefab", "Permission for group mention": "mychat.moder" } }, "vip": { "Prefix types": [ "[%prefix%]", "%prefix% |", "%prefix% ·" ], "Prefixes": [ "VIP", "†" ], "Prefix colors": [ "#E0947A", "#BBC47E" ], "Nickname colors": [ "#84B4DD", "#D1B283" ], "Message colors": [ "#FFFFFF", "#84B4DD" ], "Personal mention color": "#84B4DD", "Permission for group broadcast messages": "mychat.moder", "Group mention settings": { "Trigger words for group mention": [ "vip" ], "Mention color": "#D1B283", "Sound notification": "assets/bundled/prefabs/fx/notice/loot.drag.dropsuccess.fx.prefab", "Permission for group mention": "mychat.moder" } } }, "Settings: Logging": { "Global chat logging": { "Webhook URL": "https://discord.com/api/webhooks/XX/XXX", "Avatar": "%playerAvatar%", "Display name": "%playerNick%", "Message template": "%playerPrefix% %playerNick%: %message%" }, "Team chat logging": { "Webhook URL": "https://discord.com/api/webhooks/XX/XXX", "Avatar": "%playerAvatar%", "Display name": "%playerNick%", "Message template": "[TEAM] %playerPrefix% %playerNick%: %message%" }, "Private chat logging": { "Webhook URL": "https://discord.com/api/webhooks/XX/XXX", "Avatar": "%playerAvatar%", "Display name": "%playerNick%", "Message template": "%playerPrefix% %playerNick% отправил %targetNick%: %message%" }, "Chat/voice mute logs": { "Webhook URL": "https://discord.com/api/webhooks/XX/XXX", "Avatar": "%adminAvatar%", "Display name": "%adminNick%", "Message template": "%adminNick% выдал <мут/размут> <чата/голосового чата> игроку %targetNick%\nПричина: %reason%\nВремя: %time%" } } }
API:
PlayerSettings API_GetPlayerSettings(ulong userID) - Returns player’s chat customization settings. bool API_IsMuteChat(ulong userID) - Checks if the player currently has an active chat mute. bool API_IsMuteVoice(ulong userID) - Checks if the player currently has an active voice mute. void API_SendMessageToPlayer(ulong userID, string message, string prefix = null, string avatarID = "0") - Sends a message directly to a player in chat. public class PlayerSettings { public string prefixType, prefix, prefixColor, nickColor, messageColor; public bool onPrivateMessage, onMention, onSound; }
Hooks:
OnPlayerMuted(BasePlayer admin, BasePlayer target, double time, string reason, bool isVoice) – Called when a player is muted (chat or voice) OnPlayerUnmuted(BasePlayer admin, BasePlayer target, string reason, bool isVoice) – Called when a player is unmuted OnSendBadWord(BasePlayer player, string defMessage) – Called when a forbidden word is detected in a message
