serverwatcher 5.33a1__tar.gz → 5.33a3__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (21) hide show
  1. {serverwatcher-5.33a1/src/serverwatcher.egg-info → serverwatcher-5.33a3}/PKG-INFO +1 -1
  2. {serverwatcher-5.33a1 → serverwatcher-5.33a3}/pyproject.toml +1 -1
  3. {serverwatcher-5.33a1 → serverwatcher-5.33a3}/src/serverwatcher/configclasses/config.py +8 -0
  4. {serverwatcher-5.33a1 → serverwatcher-5.33a3}/src/serverwatcher/defaultconfigs/config.yaml +5 -0
  5. {serverwatcher-5.33a1 → serverwatcher-5.33a3}/src/serverwatcher/watcher.py +14 -2
  6. {serverwatcher-5.33a1 → serverwatcher-5.33a3/src/serverwatcher.egg-info}/PKG-INFO +1 -1
  7. {serverwatcher-5.33a1 → serverwatcher-5.33a3}/LICENSE +0 -0
  8. {serverwatcher-5.33a1 → serverwatcher-5.33a3}/README.md +0 -0
  9. {serverwatcher-5.33a1 → serverwatcher-5.33a3}/setup.cfg +0 -0
  10. {serverwatcher-5.33a1 → serverwatcher-5.33a3}/src/serverwatcher/__init__.py +0 -0
  11. {serverwatcher-5.33a1 → serverwatcher-5.33a3}/src/serverwatcher/__main__.py +0 -0
  12. {serverwatcher-5.33a1 → serverwatcher-5.33a3}/src/serverwatcher/configclasses/__init__.py +0 -0
  13. {serverwatcher-5.33a1 → serverwatcher-5.33a3}/src/serverwatcher/configclasses/messages.py +0 -0
  14. {serverwatcher-5.33a1 → serverwatcher-5.33a3}/src/serverwatcher/configclasses/watcher.py +0 -0
  15. {serverwatcher-5.33a1 → serverwatcher-5.33a3}/src/serverwatcher/defaultconfigs/messages.yaml +0 -0
  16. {serverwatcher-5.33a1 → serverwatcher-5.33a3}/src/serverwatcher/defaultconfigs/watcher.yaml +0 -0
  17. {serverwatcher-5.33a1 → serverwatcher-5.33a3}/src/serverwatcher/validator.py +0 -0
  18. {serverwatcher-5.33a1 → serverwatcher-5.33a3}/src/serverwatcher.egg-info/SOURCES.txt +0 -0
  19. {serverwatcher-5.33a1 → serverwatcher-5.33a3}/src/serverwatcher.egg-info/dependency_links.txt +0 -0
  20. {serverwatcher-5.33a1 → serverwatcher-5.33a3}/src/serverwatcher.egg-info/requires.txt +0 -0
  21. {serverwatcher-5.33a1 → serverwatcher-5.33a3}/src/serverwatcher.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: serverwatcher
3
- Version: 5.33a1
3
+ Version: 5.33a3
4
4
  Summary: A HungerLib-powered Minecraft server automation engine.
5
5
  Author: iFamished
6
6
  License: GPL-3.0
@@ -7,7 +7,7 @@ build-backend = "setuptools.build_meta"
7
7
 
8
8
  [project]
9
9
  name = "serverwatcher"
10
- version = "5.33.alpha1"
10
+ version = "5.33-alpha.3"
11
11
  description = "A HungerLib-powered Minecraft server automation engine."
12
12
  readme = "README.md"
13
13
  requires-python = ">=3.14"
@@ -20,6 +20,10 @@ class GlobalConfig:
20
20
  bridge_token: str = 'hungerbridge.token'
21
21
  bridge_url: str = 'hungerbridge.url'
22
22
 
23
+ discord_enabled = 'discord.enabled'
24
+ discord_token = 'discord.token'
25
+ discord_url = 'discord.url'
26
+
23
27
  enable_logging: bool = 'logger.enabled'
24
28
  logger_name: str = 'logger.name'
25
29
  log_path: str = 'logger.log_path'
@@ -49,6 +53,10 @@ class fallbacks:
49
53
  bridge_token = 'CHANGE_ME'
50
54
  bridge_url = 'https://api.example.com:1913'
51
55
 
56
+ discord_enabled = True
57
+ discord_token = 'CHANGE_ME'
58
+ discord_url = 'https://bot.example.com'
59
+
52
60
  enable_logging = True
53
61
  logger_name = 'Server Watcher'
54
62
  log_path = '/home/container/logs/'
@@ -16,6 +16,11 @@ hungerbridge:
16
16
  token: 'CHANGE_ME'
17
17
  url: 'https://api.example.com:1913'
18
18
 
19
+ discord:
20
+ enabled: True
21
+ token: 'CHANGE_ME'
22
+ url: 'https://bot.example.com'
23
+
19
24
  logger:
20
25
  enabled: True
21
26
  name: 'Server Watcher'
@@ -1,8 +1,7 @@
1
- import os
2
1
  import time
3
2
  from zoneinfo import ZoneInfo
4
3
 
5
- from hungerlib import servers, MessageRouter, loadConfig, utils
4
+ from hungerlib import servers, MessageRouter, loadConfig, DiscordBotWebhook, utils
6
5
  from mapres import MapResolver, maps
7
6
 
8
7
  from serverwatcher.configclasses.config import GlobalConfig
@@ -99,6 +98,11 @@ class ServerWatcher:
99
98
  )
100
99
 
101
100
  self.tz = ZoneInfo(self.config.timezone)
101
+ self.Webhook = DiscordBotWebhook(url=self.config.discord_url, token=self.config.discord_token)
102
+
103
+ def webhookSend(self, event: str, **ctx):
104
+ if self.config.discord_enabled:
105
+ self.Webhook.send(event=event, **ctx)
102
106
 
103
107
  def clearTerminal(self):
104
108
  if self.config.clear_terminal:
@@ -110,7 +114,10 @@ class ServerWatcher:
110
114
 
111
115
  def restart_and_wait(self):
112
116
  self.server.restart()
117
+
113
118
  self.router.info(self.messages.restart_action_sent)
119
+ self.webhookSend(event='restart_action_sent', server=self.config.server_name)
120
+
114
121
  time.sleep(self.watcherconfig.restart_wait_seconds)
115
122
 
116
123
  self.router.warn(self.messages.status_check)
@@ -123,8 +130,10 @@ class ServerWatcher:
123
130
  if alive:
124
131
  self.router.info(self.messages.server_back_online)
125
132
  self.router.destination(self.messages.server_back_online_log)
133
+ self.webhookSend(event='server_back_online', server=self.config.server_name)
126
134
  else:
127
135
  self.router.error(self.messages.server_failed_restart)
136
+ self.webhookSend(event='server_failed_restart', server=self.config.server_name)
128
137
 
129
138
  def schedule_restart(self, minutes):
130
139
  info = utils.snapSchedule(
@@ -137,6 +146,7 @@ class ServerWatcher:
137
146
  time_str = local_time.strftime('%I:%M %p')
138
147
 
139
148
  self.router.broadcast(self.messages.broadcast_restart_at, time=time_str)
149
+ self.webhookSend(event="restart_scheduled", server=self.config.server_name, time=time_str)
140
150
 
141
151
  def plural(n):
142
152
  return '' if n == 1 else 's'
@@ -188,6 +198,7 @@ class ServerWatcher:
188
198
  time.sleep(2)
189
199
  else:
190
200
  self.router.error(self.messages.validation_fail)
201
+ self.webhookSend(event="validation_fail", server=self.config.server_name)
191
202
  return
192
203
 
193
204
  sample_duration_formatted = int(self.watcherconfig.sample_duration) if self.watcherconfig.sample_duration.is_integer() else self.watcherconfig.sample_duration
@@ -268,6 +279,7 @@ class ServerWatcher:
268
279
  self.schedule_restart(self.watcherconfig.high_gap_minutes)
269
280
 
270
281
  self.restart_and_wait()
282
+ # send discord message
271
283
 
272
284
  def run(self):
273
285
  if self.config.handle_keyboard_interrupt:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: serverwatcher
3
- Version: 5.33a1
3
+ Version: 5.33a3
4
4
  Summary: A HungerLib-powered Minecraft server automation engine.
5
5
  Author: iFamished
6
6
  License: GPL-3.0
File without changes
File without changes
File without changes