diff --git a/README.md b/README.md
index 94682d14..2992711c 100644
--- a/README.md
+++ b/README.md
@@ -33,6 +33,7 @@ If you are reading this it looks like you are looking to add an egg to your serv
 * [CorpBot](/bots/discord/corpbot) Python
 * [Dynamica](/bots/discord/dynamica) Node JS
 * [fragbot](/bots/discord/fragbot) Golang
+* [Game Server Watcher](/bots/discord/game-server-watcher) Node JS
 * [JMusicBot](/bots/discord/jmusicbot) Java
 * [Muse](/bots/discord/muse) Node JS
 * [parkertron](/bots/discord/parkertron) Golang
diff --git a/bots/discord/README.md b/bots/discord/README.md
index 1793f497..070b5148 100644
--- a/bots/discord/README.md
+++ b/bots/discord/README.md
@@ -22,6 +22,11 @@ A very clumsy python bot for discord
 [fragforce/fragbot](https://github.com/fragforce/fragbot)
 The bot that runs as the fragforce `@Fragbot` offering looking-for-group services for now
 
+### [Game Server Watcher](game-server-watcher)
+
+[a-sync/game-server-watcher](https://github.com/a-sync/game-server-watcher)
+A simple discord/telegram/slack bot that can be hosted on a free service to monitor your game servers and players in style. 😎
+
 ### [JMusicBot](jmusicbot)
 
 [jagrosh/MusicBot](https://github.com/jagrosh/MusicBot)
diff --git a/bots/discord/game-server-watcher/README.md b/bots/discord/game-server-watcher/README.md
new file mode 100644
index 00000000..5134102b
--- /dev/null
+++ b/bots/discord/game-server-watcher/README.md
@@ -0,0 +1,22 @@
+# Game Server Watcher
+
+## From [Github](https://github.com/a-sync/game-server-watcher#readme)
+A simple discord/telegram/slack bot that can be hosted on a free service to monitor your game servers and players in style. 😎  
+
+## Screenshots
+ 
  
  
  +
+## Running the bot
+Refer to the wiki on how to acquire tokens for:
+ * [steam](https://github.com/a-sync/game-server-watcher/wiki/Steam-Web-API-key)
+ * [discord](https://github.com/a-sync/game-server-watcher/wiki/Discord-bot-token)
+ * [telegram](https://github.com/a-sync/game-server-watcher/wiki/Telegram-bot-token)
+ * [slack](https://github.com/a-sync/game-server-watcher/wiki/Slack-bot-token)
+
+## Server Ports
+GSW Control Panel requires one port for http traffic.  
+(It can be any port.)  
+
+| Port    | default |
+|---------|---------|
+| Web     | 8081    |
diff --git a/bots/discord/game-server-watcher/egg-game-server-watcher.json b/bots/discord/game-server-watcher/egg-game-server-watcher.json
new file mode 100644
index 00000000..47cbaee8
--- /dev/null
+++ b/bots/discord/game-server-watcher/egg-game-server-watcher.json
@@ -0,0 +1,122 @@
+{
+    "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO",
+    "meta": {
+        "version": "PTDL_v2",
+        "update_url": null
+    },
+    "exported_at": "2023-10-24T16:33:47+00:00",
+    "name": "Game Server Watcher",
+    "author": "a-sync@devs.space",
+    "description": "A simple discord\/telegram\/slack bot that can be hosted on a free service to monitor your game servers and players in style. \ud83d\ude0e",
+    "features": null,
+    "docker_images": {
+        "Node.js 20": "ghcr.io\/parkervcp\/yolks:nodejs_20"
+    },
+    "file_denylist": [],
+    "startup": "env PORT={{SERVER_PORT}} \/usr\/local\/bin\/node \/home\/container\/dist\/server.js",
+    "config": {
+        "files": "{}",
+        "startup": "{\r\n    \"done\": \"starting loop...\"\r\n}",
+        "logs": "{}",
+        "stop": "^^C"
+    },
+    "scripts": {
+        "installation": {
+            "script": "#!\/bin\/bash\r\napt-get update && apt-get install ca-certificates git -yq --no-install-suggests --no-install-recommends --allow-downgrades --allow-remove-essential --allow-change-held-packages\r\ncd \/mnt\/server\r\ngit config --global --add safe.directory \/mnt\/server\r\ngit clone https:\/\/github.com\/a-sync\/game-server-watcher.git . || git pull\r\nnpm install && npm run build\r\nnpm prune --omit=dev",
+            "container": "node:20-bullseye-slim",
+            "entrypoint": "bash"
+        }
+    },
+    "variables": [
+        {
+            "name": "SECRET",
+            "description": "Admin secret",
+            "env_variable": "SECRET",
+            "default_value": "",
+            "user_viewable": true,
+            "user_editable": true,
+            "rules": "required|string|min:8|max:255",
+            "field_type": "text"
+        },
+        {
+            "name": "DATA_PATH",
+            "description": "Writable folder for data storage",
+            "env_variable": "DATA_PATH",
+            "default_value": ".\/data\/",
+            "user_viewable": true,
+            "user_editable": true,
+            "rules": "required|string|min:1|max:255",
+            "field_type": "text"
+        },
+        {
+            "name": "REFRESH_TIME_MINUTES",
+            "description": "Game server info refresh interval in minutes",
+            "env_variable": "REFRESH_TIME_MINUTES",
+            "default_value": "2",
+            "user_viewable": true,
+            "user_editable": true,
+            "rules": "required|integer|min:1",
+            "field_type": "text"
+        },
+        {
+            "name": "DISCORD_BOT_TOKEN",
+            "description": "Discord bot token",
+            "env_variable": "DISCORD_BOT_TOKEN",
+            "default_value": "",
+            "user_viewable": true,
+            "user_editable": true,
+            "rules": "nullable|string",
+            "field_type": "text"
+        },
+        {
+            "name": "TELEGRAM_BOT_TOKEN",
+            "description": "Telegram bot token",
+            "env_variable": "TELEGRAM_BOT_TOKEN",
+            "default_value": "",
+            "user_viewable": true,
+            "user_editable": true,
+            "rules": "nullable|string",
+            "field_type": "text"
+        },
+        {
+            "name": "STEAM_WEB_API_KEY",
+            "description": "Steam web API key",
+            "env_variable": "STEAM_WEB_API_KEY",
+            "default_value": "",
+            "user_viewable": true,
+            "user_editable": true,
+            "rules": "nullable|string",
+            "field_type": "text"
+        },
+        {
+            "name": "Debug Mode",
+            "description": "Enable or disable debug mode.",
+            "env_variable": "DBG",
+            "default_value": "0",
+            "user_viewable": true,
+            "user_editable": true,
+            "rules": "required|in:0,1",
+            "field_type": "text"
+        },
+        {
+            "name": "SLACK_BOT_TOKEN",
+            "description": "Slack bot token",
+            "env_variable": "SLACK_BOT_TOKEN",
+            "default_value": "",
+            "user_viewable": true,
+            "user_editable": true,
+            "rules": "nullable|string",
+            "field_type": "text"
+        },
+        {
+            "name": "SLACK_APP_TOKEN",
+            "description": "Slack app token",
+            "env_variable": "SLACK_APP_TOKEN",
+            "default_value": "",
+            "user_viewable": true,
+            "user_editable": true,
+            "rules": "nullable|string",
+            "field_type": "text"
+        }
+    ]
+}
\ No newline at end of file
 
+
+## Running the bot
+Refer to the wiki on how to acquire tokens for:
+ * [steam](https://github.com/a-sync/game-server-watcher/wiki/Steam-Web-API-key)
+ * [discord](https://github.com/a-sync/game-server-watcher/wiki/Discord-bot-token)
+ * [telegram](https://github.com/a-sync/game-server-watcher/wiki/Telegram-bot-token)
+ * [slack](https://github.com/a-sync/game-server-watcher/wiki/Slack-bot-token)
+
+## Server Ports
+GSW Control Panel requires one port for http traffic.  
+(It can be any port.)  
+
+| Port    | default |
+|---------|---------|
+| Web     | 8081    |
diff --git a/bots/discord/game-server-watcher/egg-game-server-watcher.json b/bots/discord/game-server-watcher/egg-game-server-watcher.json
new file mode 100644
index 00000000..47cbaee8
--- /dev/null
+++ b/bots/discord/game-server-watcher/egg-game-server-watcher.json
@@ -0,0 +1,122 @@
+{
+    "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO",
+    "meta": {
+        "version": "PTDL_v2",
+        "update_url": null
+    },
+    "exported_at": "2023-10-24T16:33:47+00:00",
+    "name": "Game Server Watcher",
+    "author": "a-sync@devs.space",
+    "description": "A simple discord\/telegram\/slack bot that can be hosted on a free service to monitor your game servers and players in style. \ud83d\ude0e",
+    "features": null,
+    "docker_images": {
+        "Node.js 20": "ghcr.io\/parkervcp\/yolks:nodejs_20"
+    },
+    "file_denylist": [],
+    "startup": "env PORT={{SERVER_PORT}} \/usr\/local\/bin\/node \/home\/container\/dist\/server.js",
+    "config": {
+        "files": "{}",
+        "startup": "{\r\n    \"done\": \"starting loop...\"\r\n}",
+        "logs": "{}",
+        "stop": "^^C"
+    },
+    "scripts": {
+        "installation": {
+            "script": "#!\/bin\/bash\r\napt-get update && apt-get install ca-certificates git -yq --no-install-suggests --no-install-recommends --allow-downgrades --allow-remove-essential --allow-change-held-packages\r\ncd \/mnt\/server\r\ngit config --global --add safe.directory \/mnt\/server\r\ngit clone https:\/\/github.com\/a-sync\/game-server-watcher.git . || git pull\r\nnpm install && npm run build\r\nnpm prune --omit=dev",
+            "container": "node:20-bullseye-slim",
+            "entrypoint": "bash"
+        }
+    },
+    "variables": [
+        {
+            "name": "SECRET",
+            "description": "Admin secret",
+            "env_variable": "SECRET",
+            "default_value": "",
+            "user_viewable": true,
+            "user_editable": true,
+            "rules": "required|string|min:8|max:255",
+            "field_type": "text"
+        },
+        {
+            "name": "DATA_PATH",
+            "description": "Writable folder for data storage",
+            "env_variable": "DATA_PATH",
+            "default_value": ".\/data\/",
+            "user_viewable": true,
+            "user_editable": true,
+            "rules": "required|string|min:1|max:255",
+            "field_type": "text"
+        },
+        {
+            "name": "REFRESH_TIME_MINUTES",
+            "description": "Game server info refresh interval in minutes",
+            "env_variable": "REFRESH_TIME_MINUTES",
+            "default_value": "2",
+            "user_viewable": true,
+            "user_editable": true,
+            "rules": "required|integer|min:1",
+            "field_type": "text"
+        },
+        {
+            "name": "DISCORD_BOT_TOKEN",
+            "description": "Discord bot token",
+            "env_variable": "DISCORD_BOT_TOKEN",
+            "default_value": "",
+            "user_viewable": true,
+            "user_editable": true,
+            "rules": "nullable|string",
+            "field_type": "text"
+        },
+        {
+            "name": "TELEGRAM_BOT_TOKEN",
+            "description": "Telegram bot token",
+            "env_variable": "TELEGRAM_BOT_TOKEN",
+            "default_value": "",
+            "user_viewable": true,
+            "user_editable": true,
+            "rules": "nullable|string",
+            "field_type": "text"
+        },
+        {
+            "name": "STEAM_WEB_API_KEY",
+            "description": "Steam web API key",
+            "env_variable": "STEAM_WEB_API_KEY",
+            "default_value": "",
+            "user_viewable": true,
+            "user_editable": true,
+            "rules": "nullable|string",
+            "field_type": "text"
+        },
+        {
+            "name": "Debug Mode",
+            "description": "Enable or disable debug mode.",
+            "env_variable": "DBG",
+            "default_value": "0",
+            "user_viewable": true,
+            "user_editable": true,
+            "rules": "required|in:0,1",
+            "field_type": "text"
+        },
+        {
+            "name": "SLACK_BOT_TOKEN",
+            "description": "Slack bot token",
+            "env_variable": "SLACK_BOT_TOKEN",
+            "default_value": "",
+            "user_viewable": true,
+            "user_editable": true,
+            "rules": "nullable|string",
+            "field_type": "text"
+        },
+        {
+            "name": "SLACK_APP_TOKEN",
+            "description": "Slack app token",
+            "env_variable": "SLACK_APP_TOKEN",
+            "default_value": "",
+            "user_viewable": true,
+            "user_editable": true,
+            "rules": "nullable|string",
+            "field_type": "text"
+        }
+    ]
+}
\ No newline at end of file