{"id":13539601,"url":"https://github.com/joshuaferrara/node-csgo","last_synced_at":"2025-12-17T10:04:01.440Z","repository":{"id":16184023,"uuid":"18930560","full_name":"joshuaferrara/node-csgo","owner":"joshuaferrara","description":"A node-steam plugin for Counter-Strike: Global Offensive.","archived":false,"fork":false,"pushed_at":"2023-09-27T00:59:51.000Z","size":37145,"stargazers_count":468,"open_issues_count":9,"forks_count":82,"subscribers_count":39,"default_branch":"master","last_synced_at":"2025-10-18T11:07:52.536Z","etag":null,"topics":["counter-strike","csgo","game-coordinator","javascript","node-steam","nodejs","npm","steam"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/joshuaferrara.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null}},"created_at":"2014-04-19T01:23:17.000Z","updated_at":"2025-10-15T22:14:57.000Z","dependencies_parsed_at":"2022-07-21T06:47:21.314Z","dependency_job_id":"e1dbde5b-bf04-4999-9e97-4a9e0ac49136","html_url":"https://github.com/joshuaferrara/node-csgo","commit_stats":{"total_commits":204,"total_committers":24,"mean_commits":8.5,"dds":0.607843137254902,"last_synced_commit":"9d58de69a018e9a24ed16f6426f9a87722593bcc"},"previous_names":[],"tags_count":24,"template":false,"template_full_name":null,"purl":"pkg:github/joshuaferrara/node-csgo","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/joshuaferrara%2Fnode-csgo","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/joshuaferrara%2Fnode-csgo/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/joshuaferrara%2Fnode-csgo/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/joshuaferrara%2Fnode-csgo/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/joshuaferrara","download_url":"https://codeload.github.com/joshuaferrara/node-csgo/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/joshuaferrara%2Fnode-csgo/sbom","scorecard":{"id":534411,"data":{"date":"2025-08-11","repo":{"name":"github.com/joshuaferrara/node-csgo","commit":"e5ef24438506b74b6e3d598663a76ea4c2b78e21"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":2.1,"checks":[{"name":"Dangerous-Workflow","score":-1,"reason":"no workflows found","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"Code-Review","score":1,"reason":"Found 4/22 approved changesets -- score normalized to 1","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Maintained","score":0,"reason":"0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Pinned-Dependencies","score":-1,"reason":"no dependencies found","details":null,"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Token-Permissions","score":-1,"reason":"No tokens found","details":null,"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: MIT License: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":0,"reason":"branch protection not enabled on development/release branches","details":["Warn: branch protection not enabled for branch 'master'"],"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"Vulnerabilities","score":2,"reason":"8 existing vulnerabilities detected","details":["Warn: Project is vulnerable to: GHSA-v6h2-p8h4-qcjw","Warn: Project is vulnerable to: GHSA-582f-p4pg-xc74","Warn: Project is vulnerable to: GHSA-4gmj-3p3h-gm8h","Warn: Project is vulnerable to: GHSA-f8q6-p94x-37v3","Warn: Project is vulnerable to: GHSA-vh95-rmgr-6w4m","Warn: Project is vulnerable to: GHSA-xvch-5gv4-984h","Warn: Project is vulnerable to: GHSA-762f-c2wg-m8c8","Warn: Project is vulnerable to: GHSA-c4w7-xm78-47vh"],"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 12 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}}]},"last_synced_at":"2025-08-20T06:34:39.812Z","repository_id":16184023,"created_at":"2025-08-20T06:34:39.812Z","updated_at":"2025-08-20T06:34:39.812Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":27781470,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-12-17T02:00:08.291Z","response_time":55,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["counter-strike","csgo","game-coordinator","javascript","node-steam","nodejs","npm","steam"],"created_at":"2024-08-01T09:01:28.862Z","updated_at":"2025-12-17T10:04:01.423Z","avatar_url":"https://github.com/joshuaferrara.png","language":"JavaScript","readme":"node-csgo\n========\n\nNeed help? Don't open an issue - ask in the Gitter room.\n\n[![Join the chat at https://gitter.im/joshuaferrara/node-csgo](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/joshuaferrara/node-csgo?utm_source=badge\u0026utm_medium=badge\u0026utm_campaign=pr-badge\u0026utm_content=badge)\n\n[![Build Status](https://travis-ci.org/joshuaferrara/node-csgo.svg?branch=master)](https://travis-ci.org/joshuaferrara/node-csgo)\n[![Code Climate](https://codeclimate.com/github/joshuaferrara/node-csgo/badges/gpa.svg)](https://codeclimate.com/github/joshuaferrara/node-csgo)\n\n[![NPM](https://nodei.co/npm/csgo.png?downloads=true\u0026stars=true)](https://nodei.co/npm/csgo/)\n\n---\n\nA node-steam plugin for Counter-Strike: Global Offensive.\n\nBased on [node-dota2](https://github.com/RJacksonm1/node-dota2) by [RJacksonm1](https://github.com/RJacksonm1/)\n\n# Used by\n* [PopFlash](https://popflash.site/) - Alternative CS:GO matchmaking \u0026 PUG service.\n* [CS Stats](https://csstats.gg/) - Detailed insights and statistics for competitive CS:GO\n\n\u003e This list is getting too long. Wanna be on it? Message me on Gitter and we'll talk. - joshuaferrara\n\n# Requirements\n* node-steam\n* CS:GO must be purchased on the account you sign in with.\n\n# Initializing\nParameters:\n* `steamUser` - Pass a SteamUser instance to change your current status(In-game/not).\n* `steamGC` - Pass a SteamGameCoordinator instance to use to send \u0026 receive GC messages.\n* `debug` - A boolean noting whether to print information about operations to console.\n\n```js\nvar Steam = require('steam'),\n    steamClient = new Steam.SteamClient(),\n    steamUser = new Steam.SteamUser(steamClient),\n    steamGC = new Steam.SteamGameCoordinator(steamClient, 730),\n    csgo = require('csgo'),\n    CSGO = new csgo.CSGOClient(steamUser, steamGC, false);\n```\n\n# Methods\nAll methods require the SteamClient instance to be logged on.\n\n## CSGO\n\n### `launch()`\n\nReports to Steam that you're playing Counter-Strike: Global Offensive, and then initiates communication with the Game Coordinator.\n\n### `exit()`\n\nTells Steam that you are not playing CS:GO.\n\n### `ToAccountID(steamId)`\n\nConverts a 64 bit steam ID to an account ID.\n\n### `ToSteamID(accountId)`\n\nConverts an account ID to a 64 bit steam ID.\n\n### `Rank.getString(int rank_id)`\n\nConverts an integer rank_id to a string. Ex: `CSGO.Rank.getString(1) = \"Silver I\"`\n\n### `Level.getString(int player_level)`\n\nConverts an integer player_level to a string. Ex: `CSGO.Level.getString(1) = \"Recruit\"`\n\n## Matches\n\n### `matchmakingStatsRequest()`\n\nSends a message to the Game Coordinator requesting some matchmaking stats. Listen for the `matchmakingStatsData` event for the game coordinator's response. Requires the GC to be ready (listen for the `ready` event before calling).\n\n### `requestRecentGames()`\n\nRequests a list of recent games for the currently logged in account. Listen for the `matchList` event for the game coordinator's response.\n\n### `requestLiveGameForUser(accountId)`\n\nRequests current live game info for given user. Listen for the `matchList` event for the game coordinator's response.\n\n### `requestGame(string matchid, string outcomeid, int token)`\n\nRequests info about game given a matchId, outcomeId, and token for a game (Tip: These can be found with the Sharecode decoder). Listen for the `matchList` event for the game coordinator's response.\n\n### `requestWatchInfoFriends(arguments)`\n\nRequests watchable info for game.\nArguments:\n```javascript\nint request_id; //Not enough tests yet\naccount_ids[array_of_csgo_accounts];//Not enough tests yet\nlong serverid;//ServerID of match.\nlong matchid;//MatchID of match.\n```\nExample:\n```javascript\nCSGO.requestWatchInfoFriends({\n  serverid: new Long(-569600767, -2130640678, true).toString(),\n  matchid: new Long(39, 719230023, true).toString()\n});\n```\nRequirements: game should be live.\n\nListen for the `watchList` event for the game coordinator's response.\n\n### `requestCurrentLiveGames()`\n\nRequests a list of current live games. Listen for the `matchList` event for the game coordinator's response.\n\n## Player Info\n\n### `playerProfileRequest(accountId)`\n\n`accountId` is the player's account ID (A player's SteamID64 can be converted to an account ID with `CSGO.ToAccountID(steamid)`).\n\nRequests a player's profile from the game coordinator. The player must be online and playing CS:GO. Listen for the `playerProfile` event for the game coordinator's response.\n\n## Rich Presence\n\n\u003e Note: You cannot set your rich presence to arbitrary strings anymore. Rather, games now define a list of up to 20 rich presence values that can be displayed. See the `SetRichPresence` method in [this documentation](https://partner.steamgames.com/doc/api/ISteamFriends#SetRichPresence) for more info.\n\n### `richPresenceUpload(richPresenceObject)`\n\nSets the rich presence object for the currently logged in user. Rich presence is Valve's solution to giving friends information on what you're doing in a game. For example, when you see information about another friends matchmaking game (as in, the map and score), this is set by using rich presence. An example of how to use this method can be found in [example.js](https://github.com/joshuaferrara/node-csgo/blob/master/example/example.js)\n\n## Item Data\n\n### `itemDataRequest(string s, string a, string d, string m)`\n\nRequests item data for the specified CSGO item inspect link parameters. The parameter `s` has a value when the inspect link is from an inventory; likewise, the parameter `m` has a value when the inspect link is from the market. If there is no value for a given parameter from the inspect link, set it to `\"0\"`. \n\nListen for the `itemData` event for the game coordinator's response.\n\nExample for an inventory inspect link for a CSGO item\n```javascript\n// steam://rungame/730/76561202255233023/+csgo_econ_action_preview%20S76561198084749846A6768147729D12557175561287951743\nCSGO.itemDataRequest(\"76561198084749846\", \"6768147729\", \"12557175561287951743\", \"0\");\n```\n\nExample for a market inspect link for a CSGO item\n```javascript\n// steam://rungame/730/76561202255233023/+csgo_econ_action_preview%20M563330426657599553A6710760926D9406593057029549017\nCSGO.itemDataRequest(\"0\", \"6710760926\", \"9406593057029549017\", \"563330426657599553\");\n```\n\n\n## Sharecode Decoding/Encoding\n\n### `new CSGO.SharecodeDecoder(string code);`\n\nInstantiates a SharecodeDecoder class to decode sharecodes.\n\nCalling the `decode()` method of the `SharecodeDecoder` will return an object with the decoded information.\n\n```javascript\nconsole.log(new CSGO.SharecodeDecoder(\"CSGO-U6MWi-hYFWJ-opPwD-JciHm-qOijD\").decode())\n\n{ matchId: '3106049990460440633',\n  outcomeId: '3106056003414655216',\n  tokenId: '11842' }\n```\n\n# Events\n### `ready`\nEmitted when the GC is ready to receive messages.  Be careful not to declare anonymous functions as event handlers here, as you'll need to be able to invalidate event handlers on an `unready` event.\n\n### `unready`\nEmitted when the connection status to the GC changes, and renders the library unavailable to interact.  You should clear any event handlers set in the `ready` event here, otherwise you'll have multiple handlers for each message every time a new `ready` event is sent.\n\n### `exited`\nEmitted when `.exit()` is called as a convenience for clearing handlers upon intentional exits.\n\n### `itemData` (`itemDataResponse`)\n\n```javascript\n{ \n    \"iteminfo\":\n   { \n        \"accountid\": null,\n        \"itemid\": Long { \"low\": -1821786863, \"high\": 1, \"unsigned\": true },\n        \"defindex\": 7,\n        \"paintindex\": 474,\n        \"rarity\": 6,\n        \"quality\": 4,\n        \"paintwear\": 1054492909,\n        \"paintseed\": 183,\n        \"killeaterscoretype\": null,\n        \"killeatervalue\": null,\n        \"customname\": null,\n        \"stickers\": [],\n        \"inventory\": 3221225475,\n        \"origin\": 8,\n        \"questid\": null,\n        \"dropreason\": null,\n        \"floatvalue\": 0.4263376295566559 \n    }\n}\n```\n\nEmitted when the game coordinator responds to the `itemDataRequest` method.\n\n### `matchmakingStatsData` (`matchmakingStatsResponse`)\n* `matchmakingStatsResponse` - Raw response object. Example response below.\n\n```javascript\n{\n    \"account_id\": 137013074,\n    \"ongoingmatch\": {                                       // Only populated when logged in user is in a match\n        \"serverid\": 90112014586923017,\n        \"direct_udp_ip\": 2734604850,\n        \"direct_udp_port\": 27035,\n        \"reservationid\": 18374688715512210549,\n        \"reservation\": {\n            \"game_type\": 520,\n            \"match_id\": 3245263802660290728,\n            \"tournament_event\": null,\n            \"pre_match_data\": null\n        },\n        \"map\": \"de_dust2\",\n        \"server_address\": \"=[A:1:153428969:9318]:0\"\n    },\n    \"global_stats\": {\n        \"players_online\": 423480,\n        \"servers_online\": 132472,\n        \"players_searching\": 4212,\n        \"servers_available\": 65497,\n        \"ongoing_matches\": 17016,\n        \"search_time_avg\": 46530,\n        \"search_statistics\": [\n            {\n                \"game_type\": 264,\n                \"search_time_avg\": 128555,\n                \"players_searching\": 148\n            },\n            {\n                \"game_type\": 520,\n                \"search_time_avg\": 31962,\n                \"players_searching\": 1768\n            },\n            {\n                \"game_type\": 1032,\n                \"search_time_avg\": 122353,\n                \"players_searching\": 426\n            },\n            {\n                \"game_type\": 2056,\n                \"search_time_avg\": 136133,\n                \"players_searching\": 160\n            },\n            {\n                \"game_type\": 4104,\n                \"search_time_avg\": 62643,\n                \"players_searching\": 1069\n            },\n            {\n                \"game_type\": 8200,\n                \"search_time_avg\": 70380,\n                \"players_searching\": 563\n            },\n            {\n                \"game_type\": 16392,\n                \"search_time_avg\": 115923,\n                \"players_searching\": 132\n            },\n            {\n                \"game_type\": 32776,\n                \"search_time_avg\": 54906,\n                \"players_searching\": 1248\n            },\n            {\n                \"game_type\": 65544,\n                \"search_time_avg\": 116871,\n                \"players_searching\": 183\n            },\n            {\n                \"game_type\": 131080,\n                \"search_time_avg\": 82308,\n                \"players_searching\": 145\n            },\n            {\n                \"game_type\": 262152,\n                \"search_time_avg\": 209331,\n                \"players_searching\": 105\n            },\n            {\n                \"game_type\": 524296,\n                \"search_time_avg\": 270376,\n                \"players_searching\": 110\n            },\n            {\n                \"game_type\": 1048584,\n                \"search_time_avg\": 64499,\n                \"players_searching\": 1020\n            },\n            {\n                \"game_type\": 268435464,\n                \"search_time_avg\": 84615,\n                \"players_searching\": 642\n            },\n            {\n                \"game_type\": 536870920,\n                \"search_time_avg\": 104965,\n                \"players_searching\": 478\n            },\n            {\n                \"game_type\": 2097160,\n                \"search_time_avg\": 198734,\n                \"players_searching\": 228\n            },\n            {\n                \"game_type\": 134217736,\n                \"search_time_avg\": 147703,\n                \"players_searching\": 203\n            },\n            {\n                \"game_type\": 8388616,\n                \"search_time_avg\": 538828,\n                \"players_searching\": 138\n            },\n            {\n                \"game_type\": 16777224,\n                \"search_time_avg\": 232350,\n                \"players_searching\": 192\n            },\n            {\n                \"game_type\": 4194312,\n                \"search_time_avg\": 237269,\n                \"players_searching\": 151\n            },\n            {\n                \"game_type\": 33554440,\n                \"search_time_avg\": 203183,\n                \"players_searching\": 181\n            }\n        ],\n        \"main_post_url\": \"\",\n        \"required_appid_version\": 13494,\n        \"pricesheet_version\": 1438240620,\n        \"twitch_streams_version\": 2,\n        \"active_tournament_eventid\": 6,\n        \"active_survey_id\": 0\n    },\n    \"penalty_seconds\": null,                                // Contains amount of time logged in account has an MM cooldown\n    \"penalty_reason\": null,                                 // Integer representing reason for MM cooldown\n    \"vac_banned\": 0,\n    \"ranking\": {\n        \"account_id\": 137013074,\n        \"rank_id\": 11,\n        \"wins\": 192,\n        \"rank_change\": null\n    },\n    \"commendation\": {\n        \"cmd_friendly\": 3,\n        \"cmd_teaching\": 3,\n        \"cmd_leader\": 3\n    },\n    \"medals\": {\n        \"medal_team\": 0,\n        \"medal_combat\": 0,\n        \"medal_weapon\": 0,\n        \"medal_global\": 0,\n        \"medal_arms\": 0,\n        \"display_items_defidx\": [],\n        \"featured_display_item_defidx\": null\n    },\n    \"my_current_event\": null,\n    \"my_current_event_teams\": [],\n    \"my_current_team\": null,\n    \"my_current_event_stages\": [],\n    \"survey_vote\": null,\n    \"activity\": null,\n    \"player_level\": 3,\n    \"player_cur_xp\": 327684342,\n    \"player_xp_bonus_flags\": null\n}\n```\n\nEmitted when the game coordinator responds to the `matchmakingStatsRequest` method.\n\n### `playerProfile` (Response to `playerProfileRequest`)\n\n\n```json\n{\n  \"request_id\": null,\n  \"account_profiles\": [\n    {\n      \"account_id\": 137013074,\n      \"ongoingmatch\": null,\n      \"global_stats\": null,\n      \"penalty_seconds\": null,\n      \"penalty_reason\": null,\n      \"vac_banned\": null,\n      \"ranking\": {\n        \"account_id\": 137013074,\n        \"rank_id\": 11,\n        \"wins\": 192,\n        \"rank_change\": null\n      },\n      \"commendation\": {\n        \"cmd_friendly\": 3,\n        \"cmd_teaching\": 3,\n        \"cmd_leader\": 3\n      },\n      \"medals\": {\n        \"medal_team\": 0,\n        \"medal_combat\": 0,\n        \"medal_weapon\": 0,\n        \"medal_global\": 0,\n        \"medal_arms\": 0,\n        \"display_items_defidx\": [],\n        \"featured_display_item_defidx\": null\n      },\n      \"my_current_event\": null,\n      \"my_current_event_teams\": [],\n      \"my_current_team\": null,\n      \"my_current_event_stages\": [],\n      \"survey_vote\": null,\n      \"activity\": null,\n      \"player_level\": 3,\n      \"player_cur_xp\": 327684342,\n      \"player_xp_bonus_flags\": null\n    }\n  ]\n}\n```\n\nEmitted when the game coordinator responds to the `playerProfileRequest` method.\n\n## `matchList` (Response to `requestRecentGames`)\n\nThe whole response ended up being too big for the readme and caused browsers to crash. Due to this, I've only included an excerpt as to what's returned.\n\n```json\n        {\n          \"reservationid\": {\n            \"low\": 65,\n            \"high\": 715485165,\n            \"unsigned\": true\n          },\n          \"reservation\": {\n            \"account_ids\": [\n              2879081,\n              182261908,\n              225695551,\n              30039512,\n              90132590,\n              94815387,\n              37671978,\n              31906737,\n              137013074,\n              61347894\n            ],\n            \"game_type\": 1032,\n            \"match_id\": null,\n            \"server_version\": null,\n            \"rankings\": [],\n            \"encryption_key\": null,\n            \"encryption_key_pub\": null,\n            \"party_ids\": [],\n            \"whitelist\": [],\n            \"tv_master_steamid\": null,\n            \"tournament_event\": null,\n            \"tournament_teams\": [],\n            \"tournament_casters_account_ids\": [],\n            \"tv_relay_steamid\": null,\n            \"pre_match_data\": null\n          },\n          \"map\": \"http://replay124.valve.net/730/003072985384448163905_0699089210.dem.bz2\",\n          \"round\": null,\n          \"kills\": [\n            21,\n            22,\n            15,\n            15,\n            12,\n            37,\n            20,\n            23,\n            17,\n            15\n          ],\n          \"assists\": [\n            5,\n            5,\n            1,\n            3,\n            4,\n            2,\n            3,\n            2,\n            6,\n            7\n          ],\n          \"deaths\": [\n            22,\n            22,\n            24,\n            23,\n            21,\n            13,\n            13,\n            19,\n            20,\n            20\n          ],\n          \"scores\": [\n            55,\n            54,\n            40,\n            39,\n            37,\n            79,\n            65,\n            59,\n            41,\n            37\n          ],\n          \"pings\": [],\n          \"round_result\": null,\n          \"match_result\": 2,\n          \"team_scores\": [\n            11,\n            16\n          ],\n          \"confirm\": null,\n          \"reservation_stage\": null,\n          \"match_duration\": 2332,\n          \"enemy_kills\": [\n            21,\n            22,\n            15,\n            15,\n            12,\n            37,\n            20,\n            23,\n            17,\n            15\n          ],\n          \"enemy_headshots\": [\n            12,\n            11,\n            4,\n            2,\n            3,\n            9,\n            6,\n            9,\n            3,\n            12\n          ],\n          \"enemy_3ks\": [],\n          \"enemy_4ks\": [],\n          \"enemy_5ks\": [],\n          \"mvps\": [\n            4,\n            3,\n            1,\n            1,\n            2,\n            4,\n            5,\n            2,\n            3,\n            2\n          ],\n          \"spectators_count\": null,\n          \"spectators_count_tv\": null,\n          \"spectators_count_lnk\": null,\n          \"enemy_kills_agg\": []\n        }\n```\n\nEmitted when `requestRecentGames`, `requestGame`, `requestLiveGameForUser`, `requestCurrentLiveGames` is replied to.\n\n## `watchList` (Response to `requestWatchInfoFriends`)\nExample:\n```json\n{\n  \"request_id\": 0,\n  \"account_ids\": [],\n  \"watchable_match_infos\": [\n    {\n      \"server_ip\": 2453839835,\n      \"tv_port\": 28056,\n      \"tv_spectators\": 1,\n      \"tv_time\": 417,\n      \"tv_watch_password\": {\n        \"buffer\": {\n          \"type\": \"Buffer\",\n          \"data\": [ ]\n        },\n        \"offset\": 21,\n        \"markedOffset\": -1,\n        \"limit\": 53,\n        \"littleEndian\": true,\n        \"noAssert\": false\n      },\n      \"cl_decryptdata_key\": null,\n      \"cl_decryptdata_key_pub\": {\n        \"low\": -249571153,\n        \"high\": 1941167002,\n        \"unsigned\": true\n      },\n      \"game_type\": 32776,\n      \"game_mapgroup\": \"mg_de_mirage\",\n      \"game_map\": \"de_mirage\",\n      \"server_id\": {\n        \"low\": 2054631424,\n        \"high\": 20977258,\n        \"unsigned\": true\n      },\n      \"match_id\": {\n        \"low\": 32,\n        \"high\": 719254593,\n        \"unsigned\": true\n      },\n      \"reservation_id\": null\n    }\n  ],\n  \"extended_timeout\": null\n}\n```\n","funding_links":[],"categories":["\u003ca id=\"5dd93fbc2f2ebc8d98672b2d95782af3\"\u003e\u003c/a\u003e工具","Packages"],"sub_categories":["\u003ca id=\"0b8e79b79094082d0906153445d6ef9a\"\u003e\u003c/a\u003eCobaltStrike","Node.js"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjoshuaferrara%2Fnode-csgo","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjoshuaferrara%2Fnode-csgo","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjoshuaferrara%2Fnode-csgo/lists"}