{"id":31920313,"url":"https://github.com/3urobeat/steam-idler","last_synced_at":"2025-10-13T21:58:34.448Z","repository":{"id":45839217,"uuid":"353483076","full_name":"3urobeat/steam-idler","owner":"3urobeat","description":"🎮 Headless cross-platform Steam game idler with multi account support!","archived":false,"fork":false,"pushed_at":"2025-10-03T18:36:02.000Z","size":343,"stargazers_count":177,"open_issues_count":3,"forks_count":24,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-10-03T20:33:54.616Z","etag":null,"topics":["bot","nodejs","steam","steam-bot","steam-hour-booster","steam-idler","steam-user","steambot"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/3urobeat.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","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,"dei":null,"publiccode":null,"codemeta":null},"funding":{"github":"3urobeat","custom":["paypal.me/3urobeat"]}},"created_at":"2021-03-31T20:34:20.000Z","updated_at":"2025-10-03T18:36:06.000Z","dependencies_parsed_at":"2024-10-20T19:11:11.695Z","dependency_job_id":null,"html_url":"https://github.com/3urobeat/steam-idler","commit_stats":null,"previous_names":["3urobeat/steam-idler"],"tags_count":11,"template":false,"template_full_name":null,"purl":"pkg:github/3urobeat/steam-idler","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/3urobeat%2Fsteam-idler","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/3urobeat%2Fsteam-idler/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/3urobeat%2Fsteam-idler/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/3urobeat%2Fsteam-idler/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/3urobeat","download_url":"https://codeload.github.com/3urobeat/steam-idler/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/3urobeat%2Fsteam-idler/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":279017012,"owners_count":26085952,"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-10-13T02:00:06.723Z","response_time":61,"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":["bot","nodejs","steam","steam-bot","steam-hour-booster","steam-idler","steam-user","steambot"],"created_at":"2025-10-13T21:58:31.798Z","updated_at":"2025-10-13T21:58:34.440Z","avatar_url":"https://github.com/3urobeat.png","language":"JavaScript","funding_links":["https://github.com/sponsors/3urobeat","paypal.me/3urobeat"],"categories":[],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n    \u003ch1\u003esteam-idler\u003c/h1\u003e\n    \u003ch4\u003eSimple cross-platform Steam game idler with multi account support.\u003c/h4\u003e\n    \u003cdiv\u003e\n        \u003ca href=\"#install\"\u003eInstall\u003c/a\u003e •\n        \u003ca href=\"#accounts\"\u003eAccounts\u003c/a\u003e •\n        \u003ca href=\"#proxies\"\u003eProxies\u003c/a\u003e •\n        \u003ca href=\"#config\"\u003eConfig\u003c/a\u003e •\n        \u003ca href=\"#start\"\u003eStart\u003c/a\u003e\n    \u003c/div\u003e\n    \u003cimg src=\"./.github/img/demo.png\"\u003e \u003c!-- https://carbon.now.sh/?bg=rgba%28184%2C233%2C134%2C0%29\u0026t=seti\u0026wt=none\u0026l=text\u0026width=1247\u0026ds=true\u0026dsyoff=11px\u0026dsblur=21px\u0026wc=true\u0026wa=false\u0026pv=56px\u0026ph=56px\u0026ln=false\u0026fl=1\u0026fm=Hack\u0026fs=14px\u0026lh=133%25\u0026si=false\u0026es=2x\u0026wm=false\u0026code=%2524%2520node%2520.%252Fidler.js%250A%255B2023-08-20%252013%253A22%253A54%2520%257C%2520INFO%255D%2520steam-idler%2520by%25203urobeat%2520v1.8%250A%250A%255B2023-08-20%252013%253A22%253A54%2520%257C%2520INFO%255D%2520Loading%2520logininfo%2520from%2520accounts.txt...%250A%250A%255B2023-08-20%252013%253A22%253A55%2520%257C%2520INFO%255D%2520Logging%2520in%25203urobeatsCommentBot2%2520in%25202%2520seconds...%250A%255B2023-08-20%252013%253A22%253A58%2520%257C%2520INFO%255D%2520%255B3urobeatsCommentBot2%255D%2520Logged%2520in%21%2520Checking%2520for%2520missing%2520licenses...%250A%255B2023-08-20%252013%253A22%253A58%2520%257C%2520INFO%255D%2520Logging%2520in%25203urobeatsCommentBot3%2520in%25202%2520seconds...%250A%255B2023-08-20%252013%253A22%253A59%2520%257C%2520INFO%255D%2520%255B3urobeatsCommentBot2%255D%2520Starting%2520to%2520idle%25201%2520games...%250A%255B2023-08-20%252013%253A23%253A01%2520%257C%2520INFO%255D%2520%255B3urobeatsCommentBot3%255D%2520Logged%2520in%21%2520Checking%2520for%2520missing%2520licenses...%250A%255B2023-08-20%252013%253A23%253A01%2520%257C%2520INFO%255D%2520Logging%2520in%25203urobeatsCommentBot4%2520in%25202%2520seconds...%250A%255B2023-08-20%252013%253A23%253A01%2520%257C%2520INFO%255D%2520%255B3urobeatsCommentBot3%255D%2520Requesting%25201%2520missing%2520license%28s%29%2520before%2520starting%2520to%2520play%2520games%2520set%2520in%2520config...%250A%255B2023-08-20%252013%253A23%253A02%2520%257C%2520INFO%255D%2520%255B3urobeatsCommentBot3%255D%2520Successfully%2520requested%25201%2520missing%2520game%2520license%28s%29%21%250A%255B2023-08-20%252013%253A23%253A04%2520%257C%2520INFO%255D%2520%255B3urobeatsCommentBot4%255D%2520Logged%2520in%21%2520Checking%2520for%2520missing%2520licenses...%250A%255B2023-08-20%252013%253A23%253A04%2520%257C%2520INFO%255D%2520Logging%2520in%25203urobeatsCommentBot5%2520in%25202%2520seconds...%250A%255B2023-08-20%252013%253A23%253A04%2520%257C%2520INFO%255D%2520%255B3urobeatsCommentBot4%255D%2520Requesting%25201%2520missing%2520license%28s%29%2520before%2520starting%2520to%2520play%2520games%2520set%2520in%2520config...%250A%255B2023-08-20%252013%253A23%253A05%2520%257C%2520INFO%255D%2520%255B3urobeatsCommentBot4%255D%2520Successfully%2520requested%25201%2520missing%2520game%2520license%28s%29%21%250A%255B2023-08-20%252013%253A23%253A07%2520%257C%2520INFO%255D%2520%255B3urobeatsCommentBot5%255D%2520Logged%2520in%21%2520Checking%2520for%2520missing%2520licenses...%250A%255B2023-08-20%252013%253A23%253A07%2520%257C%2520INFO%255D%2520%255B3urobeatsCommentBot5%255D%2520Starting%2520to%2520idle%25201%2520games... --\u003e\n\u003c/div\u003e\n\n\u0026nbsp;\n\n## ✨ Introduction\nThis is a simple cross-platform Steam game idling bot, supporting multiple accounts.  \nIt handles the connection management for all accounts for you, sends afk messages if enabled and of course idles the configured games.\n\nThis project is a slimmed down version of my [steam-comment-service-bot](https://github.com/3urobeat/steam-comment-service-bot), for users only interested in game idling.  \nIf you need more features, please check it out instead.  \nIt does way more besides supporting commenting etc, has more advanced connection management features than present here and is updated more regularly.\n\nPlease continue reading to learn how to set this bot up.\n\n\u0026nbsp;\n\n## 🚀 Install\nMake sure to have [node.js](https://nodejs.org/) installed.  \nDownload this repository as `.zip`, extract the folder and open a Terminal/Power Shell/Console in the folder.  \n\nType `npm install` to install all dependencies.  \n\n\u0026nbsp;\n\n## 👤 Accounts\nOpen the `accounts.txt` file and put an account in each line in this format:  \n`username:password:shared_secret`\n\n`shared_secret` is optional. Only provide `username:password` if you don't want to use it.  \n\n\u0026nbsp;\n\n**Login using QR-Code**:  \nYou want to login an account by scanning a QR-Code using your Steam Mobile App? Easy!  \nInstead of providing a password for that account in `accounts.txt`, set the password to \"qrcode\".  \nOn startup, the bot will display a QR-Code in the log which you can scan using your Steam Mobile App.\n\nExample:  \n`myaccount1:qrcode`\n\nThe username you provide for that account does not need to be correct, it just needs to stay the same.  \nIt is only used to store a token in the database to re-use the existing session when starting the bot the next time (so you don't need to scan the QR-Code on every startup).\n\n\u0026nbsp;\n\n## 📡 Proxies\nIf you are using many accounts it might make sense to add proxies so you don't have tons of sessions from the same IP.  \nTo do this, open the `proxies.txt` file and put as many HTTP proxies as you wish, line per line.  \nThe bot will spread all accounts equally on all available proxies, including your local IP.  \nYour proxies must follow this format: `http://user:pass@1.2.3.4:8081`  \nPlease note that Steam might block some proxy providers.  \n\n\u0026nbsp;\n  \n## 📝 Config\nOpen the `config.json` in a text editor and put the games you wan't to idle inside the `playingGames` brackets.  \n\nYou can set a custom game by passing a String as the first argument.  \nThe other numbers define the games the script will start playing. You can add more by adding a comma and the app id.  \nThe bot will automatically request licenses for free-to-play games which are set here but your accounts do not own yet. This is limited to 50 games per hour.  \n\nIf you want to set specific games for specific accounts, pass an object containing `\"accountName\": []` for every account as the first argument.  \nEverything that follows will represent the \"general\" settings, which all accounts will use that are not included in the object.  \nSee the 4th example below for a visual representation.\n\nExamples:  \n- Display \"In non-Steam game: Minecraft\" and idle TF2 \u0026 CS:GO: `\"playingGames\": [\"Minecraft\", 440, 730],`  \n- Display \"Currently In-Game: Team Fortress 2\" and idle TF2 \u0026 CS:GO: `\"playingGames\": [440, 730],`  \n- Only appear as online and don't idle anything: `\"playingGames\": [],`  \n- Display \"Specific Game\" game \u0026 idle CSGO only for account \"myacc1\". Idle nothing for account \"myacc25\". Display \"General Game\" \u0026 idle TF2 for all other accounts: `\"playingGames\": [{ \"myacc1\": [\"Specific Game\", 730], \"myacc25\": [] }, \"General Game\", 440],`\n- Idle CS:GO \u0026 Dota on \"myacc1\" and idle Dota on \"myacc2\". Play TF2 on every other account: `\"playingGames\". [{ \"myacc1\": [730, 570], \"myacc2\": [570] }, 440],`\n\nYou don't have to keep `playingGames` on one line, this is done here for documentation purposes. I recommend spreading the array over multiple lines, especially when setting lots of different games for lots of different accounts.\n  \n\u0026nbsp;\n  \nTo set a different online status you can choose a number from [this list](https://github.com/DoctorMcKay/node-steam-user/blob/master/enums/EPersonaState.js) and provide it at `onlinestatus`.  \nIf set to `null` the bot will not change your online status.  \n  \nTo set a message that will be send on a recieved message while idling, set a message as `afkMessage`.  \nLeave the brackets empty (like this: `\"\"`) to not send any message back.  \n\nThe loginDelay and relogDelay values control the time waited between logging in multiple accounts and the time waited before a relog is attempted after an account lost connection.  \nI recommend not touching them as they have good defaults to avoid cooldowns, however if you know what you are doing - they are there.  \n\n\u0026nbsp;\n\n**Important:**  \nMake sure that you don't forget any commas, the script will otherwise not start and throw a Syntax Error.  \nTake a look at the default `config.json` if you are unsure what you are missing.\n\n\u0026nbsp;\n\n## 🚀 Start\nThen just type `node idler.js` to start the script.  \nThe script will try to log in and ask you for your Steam Guard code if it needs one. When it is logged in a logged in message will be displayed.  \n\nEvery time an account loses connection it will print a session summary to a text file \"playtime.txt\" (will be created automatically).  \nThis also applies to when you stop the bot manually. To turn this whole feature off, set `logPlaytimeToFile` in the config to `false`.\n\n\u0026nbsp;\n\nThats it. A simple cross-platform Steam game idling script powered by [DoctorMcKay's steam-user library](https://github.com/DoctorMcKay/node-steam-user).\n\n\u0026nbsp;\n\n[![Stargazers over time](https://starchart.cc/3urobeat/steam-idler.svg?variant=adaptive)](https://starchart.cc/3urobeat/steam-idler)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2F3urobeat%2Fsteam-idler","html_url":"https://awesome.ecosyste.ms/projects/github.com%2F3urobeat%2Fsteam-idler","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2F3urobeat%2Fsteam-idler/lists"}