CS2 Discord Chat Sync is a plugin for Counter-Strike 2 that syncs chat between the game and a Discord channel. It features vast customization options for the message formatting and the Discord embeds. It also supports syncing team chat and chat from additional channels.
- Syncs chat between the game and a Discord channel
- Syncs team chat (optional)
- Syncs chat from additional channels (optional) - useful for news and announcements
- Ignores chat and silent triggers from core config (optional)
- Customizable Discord template for chat messages
- Customizable message template for Discord messages
- SyncPrefix to only sync messages with a certain prefix
- Send RCON commands from Discord
- Receive system messages in a channel (player join/leave, map change)
- Reload config without restarting the server
css_reload_cfg
Metamod:Source (2.x)
CounterStrikeSharp(v166)
- Install Metamod:Source and CounterStrikeSharp
- Place the
addons
folder in your serversgame/csgo/
directory
- Create a Discord bot and invite it to your server
3.1. Create a Discord bot
3.2. Invite the bot to your server
3.3. The Discord bot requires the following Privileged Gateway Intent:
- Add your Discord bot token and channel id to the config file
4.1. Located ataddons/counterstrikesharp/configs/plugins/DiscordChat/DiscordChat.json
- Restart your server
The following placeholders can be used in the ServerOutputFormat
to dynamically display certain information about the Discord message or user.
{Channel}
- The Discord channel name{Username}
- The player's name{UsernameStyled}
- The player's name styled with their Discord role color
{Time}
- The current time according toTimeFormat
{Date}
- The current date according toDateFormat
- More Information
-
You can use the following colors:
{Default}
,{White}
,{DarkRed}
,{Green}
,{LightYellow}
,{LightBlue}
,{Olive}
,{Lime}
,{Red}
,{LightPurple}
,{Purple}
,{Grey}
,{Yellow}
,{Gold}
,{Silver}
,{Blue}
,{DarkBlue}
,{BlueGrey}
,{Magenta}
,{LightRed}
,{Orange}
Example:
{Green}some {Blue}colored {Red}text{Default} some default text
The following placeholders can be used in the DiscordEmbedFormat
and the DiscordEmbedFields
to dynamically display certain information about the server or the player.
{Player.Name}
- The player's name{Player.SteamID}
- The player's SteamID{Player.Team}
- The player's short team name{Player.TeamName}
- The player's full team name{Player.TeamNum}
- The player's team number
{Server.Name}
- The server's name{Server.MapName}
- The server's map name{Server.CurPlayers}
- The server's current player count{Server.MaxPlayers}
- The server's maximum player count
{Chat.Message}
- The chat message{Chat.Team}
- The receiving team of the chat message (All, T, CT, Spec)
{Time}
- The current time according toTimeFormat
{Date}
- The current date according toDateFormat
- More Information
{
// your discord bot token
"DiscordToken": "",
// the message to display as the bot's status
"DiscordStatusMessage": "discord.game_text",
// the channel id to sync from and to
"SyncChannelId": 0,
// if false, team chat will not be synced
"SyncTeamChat": false,
// if false, console messages will not be synced (rcon say)
"SyncConsoleSay": false,
// the channel id to send system messages to (like player join/leave, map change)
"SystemChannelId": 0,
// the channel id to receive rcon commands from
"RconChannelId": 0,
// the message prefix for rcon commands (empty for all messages)
"RconMessagePrefix": "!rcon",
// additional channels to read from (for news and announcements)
"AdditionalReadChannelIds": [],
// if true, chat and silent triggers from the core config will be ignored
"IgnoreChatTriggers": true,
// options for output formatting
"ChatFormatOptions": {
// time date format
"TimeFormat": "HH:mm:ss",
"DateFormat": "dd.MM.yyyy",
// format string for the chat output of discord messages
"ServerOutputFormat": "[From Discord #{Channel}] {UsernameStyled} - {Green}{Date} {Blue}{Time}{Default}: {Message}",
// prefix for messages that should be synced (empty for all messages)
"SyncPrefix": "",
// dictionary of fields for the discord embed
// you can use all chat placeholders
"DiscordEmbedFields": {
"Server": "{Server.Name}",
"Map": "{Server.MapName}",
"Players": "{Server.CurPlayers}/{Server.MaxPlayers}",
":ballot_box_with_check: Player": "[{Player.Name} ({Player.SteamID})](https://steamcommunity.com/profiles/{Player.SteamID})",
"Team": "{Player.TeamName} - {Player.Team} - Num: {Player.TeamNum}",
"Message": "[{Chat.Team}] - {Chat.Message}",
"Time": "{Time}",
"Date": "{Date}"
},
// dictionary of general embed settings
// you can set the author, avatar (requires author), title, thumbnail, footer and color
// you can use all chat placeholders
"DiscordEmbedFormat": {
"Author": "{Server.Name}", // author of the embed (optional)
"AvatarUrl": "", // url to the author's avatar (optional) - requires author
"Title": "Message from {Player.Name}",
"ThumbnailUrl": "", // url to the thumbnail (optional)
"Footer": "https://github.com/imi-tat0r/CS2-DiscordChatSync",
"FooterIconUrl": "", // url to the footer icon (optional)
// hex color code #RRGGBB or "{TeamColor}" for the player's team color
"Color": "{TeamColor}"
},
// dictionary of system messages
// you can use all chat placeholders
// leave empty or remove to disable a message
"SystemMessages": {
"PlayerConnect": "{Player.Name} joined the server",
"PlayerDisconnect": "{Player.Name} left the server",
"MapChange": "Changed map to {Server.MapName}"
}
},
"ConfigVersion": 3 // do not change
}