/csgo_richpresence

Discord Rich Presence support for Counter-Strike: Global Offensive!

Primary LanguagePythonGNU General Public License v3.0GPL-3.0

⚠ Unsupported, use at your own risk. May be very laggy and not uninstall properly.

Discord Rich Presence support for Counter-Strike: Global Offensive!

Written in Python 3.6.4, using PyDiscordRPC, infi.systray, win10toast and the game state integration system that CS:GO uses.

The installer uses PyVDF. distribute.bat makes use of pyinstaller.

Notice: This program is completely safe and won't get you banned by VAC or from Discord. Windows SmartScreen will probably throw you off trying to run my .exe, but it's all good.

How does it work?

Once you feed CS:GO a specific and custom configuration file, it will start sending information over to a local HTTP server on your machine for it to use. So I thought about linking it to Discord's Rich Presence system, and it works beautifully!

Installation, usage

Recommended:

  1. Download the latest release's release.zip file.
  2. Extract its contents in a folder somewhere you judge appropriate for a program that you won't be touching.
  3. Run csgo_richpresence_installer.exe in there, read carefully and follow its instructions.
  4. You should now have installed the program! It will run automatically next time you start Windows, in the background.
    • If you wish to uninstall it, run csgo_richpresence_installer.exe with the --uninstall command line option.

Manual:

  1. Place the gamestate_integration_discordrpc.cfg file from this repository in the cfg folder located in your game's installation directory. (Default, on Windows: C:\Program Files (x86\Steam\steamapps\common\Counter-Strike Global Offensive\csgo\cfg) The game should now be trying to send info to the program when you restart it. (port 3000 is used by default in both the file and program)
  2. Launch the program, keep it open until you're done playing.
    • If you don't want to install Python and everything else, use the latest release's executable.

Your Discord status will now change according to what is happening in the game!

You don't need to setup your own Discord application, but I've included some the assets I've used for it if you need to. If you're a developer you should be able to understand how to figure everything out starting from your Discord applications page. The team icons are named ct and t and are considered small images. The map icons are just taken from the game's original maps folder, are considered large images and are named all lowercase based on the map's file name.

Command line options:

Main program:

  • --port, -P: Use a different port other than the default (3000) one for the HTTP server if issues arise. Don't forget to change the config file accordingly! If you do need to, you'll need to reinstall the config file into your game folders.
  • --silent, -S: Tries to hide the program's window. Should work most of the time, used by default when the program is installed. Since the window gets hidden, you get a tray icon to still be able to quit easily, and notifications to tell you the most important events. Will only work on Windows.

(Un)installer:

  • --uninstall, -U: Instead of installing the program, the installer will remove the registry key that makes it run on startup.

Support

I'm not sure if the main part of the program works on Mac and Linux, but it should. Its silent mode and the installer will only work on Windows, though.

Keep in mind this is meant to be a fun project for me to improve my Python skills, so it might not be perfect. It should work relatively good anyway, but don't hesitate to create an issue with the error log inside if it bugs out. I'll be glad to help!

Known bugs

  • None!

Planned

  • More support for other operating systems?
  • Avoid using more than one tray icon (currently win10toaster creates an extra for every notificaton)
  • Figure out how to add "Ask to Join" and "Spectate" features (probably won't be allowed to just yet)