CS2-DiscordChatSync
CS2-DiscordChatSync copied to clipboard
A plugin for Counter-Strike 2 that syncs chat between the game and a Discord channel.
CS2 Discord Chat Sync (1.1.1)

About
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.
Features
- 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
Dependencies
Metamod:Source (2.x)
CounterStrikeSharp(v166)
Installation
- Install Metamod:Source and CounterStrikeSharp
- Place the
addonsfolder 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
Message formatting
1. Discord => CS2
The following placeholders can be used in the ServerOutputFormat to dynamically display certain information about the Discord message or user.
1.1. Message Information
{Channel}- The Discord channel name{Username}- The player's name{UsernameStyled}- The player's name styled with their Discord role color
1.2. Time and Date
{Time}- The current time according toTimeFormat{Date}- The current date according toDateFormat- More Information
1.3. Colors
-
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
2. CS2 => Discord
The following placeholders can be used in the DiscordEmbedFormat and the DiscordEmbedFields to dynamically display certain information about the server or the player.
2.1. 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
2.2. Server
{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
2.3. Chat
{Chat.Message}- The chat message{Chat.Team}- The receiving team of the chat message (All, T, CT, Spec)
2.4. Time and Date
{Time}- The current time according toTimeFormat{Date}- The current date according toDateFormat- More Information
Config
{
// 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
}