{"id":16380216,"url":"https://github.com/mastercoms/gamebot","last_synced_at":"2025-10-26T10:31:01.534Z","repository":{"id":54238993,"uuid":"216205087","full_name":"mastercoms/gamebot","owner":"mastercoms","description":"quick discord bot for pinging people to play games","archived":false,"fork":false,"pushed_at":"2024-01-09T08:04:42.000Z","size":3502,"stargazers_count":7,"open_issues_count":1,"forks_count":1,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-02-04T21:44:52.350Z","etag":null,"topics":["discord","discord-bot"],"latest_commit_sha":null,"homepage":"","language":"Python","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/mastercoms.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":"2019-10-19T12:46:49.000Z","updated_at":"2024-06-19T08:35:47.000Z","dependencies_parsed_at":"2023-02-16T15:00:25.870Z","dependency_job_id":"c776ea89-d1b3-4f64-a5b8-8b96f4273535","html_url":"https://github.com/mastercoms/gamebot","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mastercoms%2Fgamebot","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mastercoms%2Fgamebot/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mastercoms%2Fgamebot/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mastercoms%2Fgamebot/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mastercoms","download_url":"https://codeload.github.com/mastercoms/gamebot/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":238310281,"owners_count":19450834,"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","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":["discord","discord-bot"],"created_at":"2024-10-11T03:50:48.116Z","updated_at":"2025-10-26T10:31:01.525Z","avatar_url":"https://github.com/mastercoms.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# game bot\n\nquick discord bot for pinging people to play games\n\n## running\n\n1. `pipenv install`\n2. `GAME_BOT_TOKEN=token pipenv run python bot.py` \n\nOptional environment variables:\n\n* `GAME_BOT_STEAM_KEY`: [Steam Web API key](https://steamcommunity.com/dev/apikey), used for getting match details at the end of the match and handling mutual friends\n* `GAME_BOT_STEAM_USER`: Used to specify Steam user which will be able to query live match status of friends\n* `GAME_BOT_STEAM_PASS`: The password for the Steam user\n* `GAME_BOT_OPENDOTA`: [OpenDota API key](https://www.opendota.com/api-keys) to use the premium tier rather the free tier of the OpenDota API, for additional match details\n\n## commands\n\nJust say `game` to schedule a game, and say `game` to join up for a scheduled one. Only supports scheduling one at a time.\n\nWhen starting it, you can also say some arguments:\n\n* `at \u003ctime\u003e`: set a specific date/time to check at. ex: `at 9`, `at 9pm`, `at 9pm PST`, `at 9:30`, etc.\n* `in \u003ctime\u003e`: set a length of time to check at. ex: `in 1h`, `in 1.5h`, `in 5m`, `in 5 mins`, `in 5 hours, 20 minutes, 30 seconds`, etc.\n* `for \u003cgame\u003e`: set the name of the game to schedule.\n\nWhile it's started, anyone can say:\n\n* `cancel`: cancels the scheduled game.\n* `now`: skips ahead to finish the schedule now.\n* `leave`: leaves a scheduled game you joined.\n* `but`: restart the game with new starting arguments\n\nEither when starting it, or while it's started, you can say:\n\n* `if \u003cnumber\u003e`: set a minimum number of players you'd like to play with. You can say this again to change it. ex: `if 3`, `if 5`, etc.\n\nIn any case, anyone can say:\n\n* `status [user]`: gives the status of a game currently running, or of any specified Discord user's game. Currently only supports Dota 2. \n* `register \u003csteam account\u003e`: associates a given Steam user to your Discord account for match handling.\n* `option set \u003ckey\u003e [value]`: sets an option, or removes it if value not specified (admins only)\n* `option get \u003ckey\u003e`: gets an option (admins only)\n* `mark [in/at] \u003ctime\u003e to [in/at] \u003ctime\u003e`: marks yourself as available for a scheduled game at a given time\n\n## configuration\n\n### settings\n\n`settings.json` starter:\n\n```json\n{\n  \"games\": {\n    \"dota\": {\n      \"display\": \"Dota 2\"\n    }\n  }\n}\n```\n\n`settings.json` explanation:\n\n```json5\n{\n  // any tz timezone: https://en.wikipedia.org/wiki/List_of_tz_database_time_zones\n  // used for parsing specified dates for \"game at\"\n  \"local_timezone\": \"US/Eastern\",\n  // the keyword to use for messages, this will be fuzzed as well,\n  // so you don't have to worry about typos\n  \"keyword\": \"game\",\n  // an extra message to send when the game fails to find any players\n  // perhaps one with a captioned image of megamind ;)\n  \"failure_message\": \"\",\n  // an extra message to send when you win a match\n  // perhaps a video or gif of confidence and triumph\n  \"win_message\": \"\",\n  // an extra message to send when you lose a match\n  // perhaps a video or gif of extreme agony and frustration\n  \"loss_message\": \"\",\n  // Steam bot will filter auto-accepting friend requests to only users who have this Steam 64 ID added\n  \"mutual_steam_id\": 76999999999999999,\n  // the list of available games, required\n  // first one is default, others can be specified with \"game for\"\n  \"games\": {\n    \"dota\": {\n      \"display\": \"Dota 2\",\n      // the minimum number of players required to play the game, defaults to 2\n      \"min\": 2,\n      // the maximum number of players that can play together\n      // this is used to allow players to specify \"game if\"\n      // so that they are only included if there are enough players\n      // defaults to equal to min, not allowing this functionality\n      \"max\": 5,\n      \"overfill\": 1,\n      \"slots\": [\n        {\n          \"name\": \"Safe Lane\",\n          \"num\": 1\n        },\n        {\n          \"name\": \"Mid Lane\",\n          \"num\": 1\n        },\n        {\n          \"name\": \"Off Lane\",\n          \"num\": 1\n        },\n        {\n          \"name\": \"Soft Support\",\n          \"num\": 1\n        },\n        {\n          \"name\": \"Hard Support\",\n          \"num\": 1\n        },\n        {\n          \"name\": \"Coach\",\n          \"num\": 1,\n          \"overfill\": true\n        }\n      ]\n    },\n    \"apex\": {\n      \"display\": \"Apex\",\n      \"max\": 3\n    },\n    \"fortnite\": {\n      \"display\": \"Fortnite\",\n      \"max\": 4\n    },\n  }\n}\n```\n\n### per-server options\n\n* `channel_id`: forces all bot responses to this channel\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmastercoms%2Fgamebot","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmastercoms%2Fgamebot","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmastercoms%2Fgamebot/lists"}