serverwatcher 5.32__tar.gz → 5.33a2__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 (22) hide show
  1. {serverwatcher-5.32/src/serverwatcher.egg-info → serverwatcher-5.33a2}/PKG-INFO +1 -1
  2. {serverwatcher-5.32 → serverwatcher-5.33a2}/pyproject.toml +1 -1
  3. {serverwatcher-5.32 → serverwatcher-5.33a2}/src/serverwatcher/configclasses/config.py +11 -3
  4. {serverwatcher-5.32 → serverwatcher-5.33a2}/src/serverwatcher/defaultconfigs/config.yaml +6 -1
  5. serverwatcher-5.33a2/src/serverwatcher/discord_bot_webook.py +13 -0
  6. {serverwatcher-5.32 → serverwatcher-5.33a2}/src/serverwatcher/watcher.py +7 -6
  7. {serverwatcher-5.32 → serverwatcher-5.33a2/src/serverwatcher.egg-info}/PKG-INFO +1 -1
  8. {serverwatcher-5.32 → serverwatcher-5.33a2}/src/serverwatcher.egg-info/SOURCES.txt +1 -0
  9. {serverwatcher-5.32 → serverwatcher-5.33a2}/LICENSE +0 -0
  10. {serverwatcher-5.32 → serverwatcher-5.33a2}/README.md +0 -0
  11. {serverwatcher-5.32 → serverwatcher-5.33a2}/setup.cfg +0 -0
  12. {serverwatcher-5.32 → serverwatcher-5.33a2}/src/serverwatcher/__init__.py +0 -0
  13. {serverwatcher-5.32 → serverwatcher-5.33a2}/src/serverwatcher/__main__.py +0 -0
  14. {serverwatcher-5.32 → serverwatcher-5.33a2}/src/serverwatcher/configclasses/__init__.py +0 -0
  15. {serverwatcher-5.32 → serverwatcher-5.33a2}/src/serverwatcher/configclasses/messages.py +0 -0
  16. {serverwatcher-5.32 → serverwatcher-5.33a2}/src/serverwatcher/configclasses/watcher.py +0 -0
  17. {serverwatcher-5.32 → serverwatcher-5.33a2}/src/serverwatcher/defaultconfigs/messages.yaml +0 -0
  18. {serverwatcher-5.32 → serverwatcher-5.33a2}/src/serverwatcher/defaultconfigs/watcher.yaml +0 -0
  19. {serverwatcher-5.32 → serverwatcher-5.33a2}/src/serverwatcher/validator.py +0 -0
  20. {serverwatcher-5.32 → serverwatcher-5.33a2}/src/serverwatcher.egg-info/dependency_links.txt +0 -0
  21. {serverwatcher-5.32 → serverwatcher-5.33a2}/src/serverwatcher.egg-info/requires.txt +0 -0
  22. {serverwatcher-5.32 → serverwatcher-5.33a2}/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.32
3
+ Version: 5.33a2
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.32"
10
+ version = "5.33.alpha2"
11
11
  description = "A HungerLib-powered Minecraft server automation engine."
12
12
  readme = "README.md"
13
13
  requires-python = ">=3.14"
@@ -18,7 +18,11 @@ class GlobalConfig:
18
18
  server_port: int = 'server.port'
19
19
 
20
20
  bridge_token: str = 'hungerbridge.token'
21
- bridge_port: int = 'hungerbridge.port'
21
+ bridge_url: str = 'hungerbridge.url'
22
+
23
+ discord_enabled = 'discord.enabled'
24
+ discord_token = 'discord.token'
25
+ discord_url = 'discord.url'
22
26
 
23
27
  enable_logging: bool = 'logger.enabled'
24
28
  logger_name: str = 'logger.name'
@@ -47,7 +51,11 @@ class fallbacks:
47
51
  server_port = 25565
48
52
 
49
53
  bridge_token = 'CHANGE_ME'
50
- bridge_port = 1913
54
+ bridge_url = 'https://api.example.com:1913'
55
+
56
+ discord_enabled = True
57
+ discord_token = 'CHANGE_ME'
58
+ discord_url = 'https://bot.example.com'
51
59
 
52
60
  enable_logging = True
53
61
  logger_name = 'Server Watcher'
@@ -72,6 +80,6 @@ class rules:
72
80
  timezone = 'recommended'
73
81
  panel_name = 'recommended'
74
82
  server_port = 'recommended'
75
- bridge_port = 'recommended'
83
+ bridge_url = 'recommended'
76
84
 
77
85
  # everything else defaults to optional
@@ -14,7 +14,12 @@ server:
14
14
 
15
15
  hungerbridge:
16
16
  token: 'CHANGE_ME'
17
- port: 1913
17
+ url: 'https://api.example.com:1913'
18
+
19
+ discord:
20
+ enabled: True
21
+ token: 'CHANGE_ME'
22
+ url: 'https://bot.example.com'
18
23
 
19
24
  logger:
20
25
  enabled: True
@@ -0,0 +1,13 @@
1
+ import requests
2
+
3
+ class DiscordBotWebhook:
4
+ def __init__(self, url: str, token: str):
5
+ self.url = url
6
+ self.token = token
7
+
8
+ def send(self, content: str, **ctx):
9
+ requests.post(
10
+ self.url,
11
+ json={"content": content, **ctx},
12
+ timeout=5
13
+ ).raise_for_status()
@@ -1,7 +1,7 @@
1
- import os
2
1
  import time
3
2
  from zoneinfo import ZoneInfo
4
3
 
4
+ from .discord_bot_webook import DiscordBotWebhook
5
5
  from hungerlib import servers, MessageRouter, loadConfig, utils
6
6
  from mapres import MapResolver, maps
7
7
 
@@ -33,7 +33,7 @@ class ServerWatcher:
33
33
  server_id=self.config.server_id,
34
34
  server_domain=self.config.server_domain,
35
35
  server_port=self.config.server_port,
36
- bridge_port=self.config.bridge_port,
36
+ bridge_url=self.config.bridge_url,
37
37
  bridge_token=self.config.bridge_token,
38
38
  )
39
39
 
@@ -99,6 +99,7 @@ class ServerWatcher:
99
99
  )
100
100
 
101
101
  self.tz = ZoneInfo(self.config.timezone)
102
+ self.Webhook = DiscordBotWebhook(url = self.config.discord_url, token = self.config.discord_token)
102
103
 
103
104
  def clearTerminal(self):
104
105
  if self.config.clear_terminal:
@@ -194,9 +195,6 @@ class ServerWatcher:
194
195
  self.router.info(self.messages.sampling_start, duration=sample_duration_formatted)
195
196
  self.server.refresh()
196
197
  snap = utils.Snapshot(self.server, duration=self.watcherconfig.sample_duration, interval=self.watcherconfig.sample_interval, drop_outliers=self.watcherconfig.sample_outlier_drop, gb=True)
197
-
198
- # get latest player count, do not average
199
- snap.players = self.server.getPlayers()
200
198
 
201
199
  pro = 0
202
200
  anti = 0
@@ -208,7 +206,7 @@ class ServerWatcher:
208
206
  self.router.debug(f'CPU: {snap.cpu}/{self.watcherconfig.threshold_cpu}')
209
207
  self.router.debug(f'Uptime: {snap.uptime // 3600}/{self.watcherconfig.threshold_uptime}')
210
208
  self.router.debug(f'TPS: {snap.tps}/{self.watcherconfig.threshold_tps}')
211
- self.router.debug(f'Players: {snap.players}')
209
+ self.router.debug(f'Players: {snap.players}/{self.server.max_players}')
212
210
 
213
211
  if snap.ram >= self.watcherconfig.threshold_ram:
214
212
  restart_reasons.append(self.res(self.messages.reason_ram, ram=snap.ram, threshold=self.watcherconfig.threshold_ram))
@@ -266,11 +264,14 @@ class ServerWatcher:
266
264
  if gap <= self.watcherconfig.threshold_low_gap:
267
265
  self.router.warn(self.messages.gap_low, gap=gap)
268
266
  self.schedule_restart(self.watcherconfig.low_gap_minutes)
267
+ # send discord message
269
268
  else:
270
269
  self.router.warn(self.messages.gap_high, gap=gap)
271
270
  self.schedule_restart(self.watcherconfig.high_gap_minutes)
271
+ # send discord message
272
272
 
273
273
  self.restart_and_wait()
274
+ # send discord message
274
275
 
275
276
  def run(self):
276
277
  if self.config.handle_keyboard_interrupt:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: serverwatcher
3
- Version: 5.32
3
+ Version: 5.33a2
4
4
  Summary: A HungerLib-powered Minecraft server automation engine.
5
5
  Author: iFamished
6
6
  License: GPL-3.0
@@ -3,6 +3,7 @@ README.md
3
3
  pyproject.toml
4
4
  src/serverwatcher/__init__.py
5
5
  src/serverwatcher/__main__.py
6
+ src/serverwatcher/discord_bot_webook.py
6
7
  src/serverwatcher/validator.py
7
8
  src/serverwatcher/watcher.py
8
9
  src/serverwatcher.egg-info/PKG-INFO
File without changes
File without changes
File without changes