-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathserver.py
More file actions
49 lines (44 loc) · 2.62 KB
/
server.py
File metadata and controls
49 lines (44 loc) · 2.62 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
from mcstatus import JavaServer
# Требуется скачать все необходимые зависимости из requirements.txt с помощью команды:
# pip install -r requirements.txt (или можно скачать их вручную)
class Server:
# При инициализации класс принимает 3 параметра:
# ip (ip),
# port (порт, по умолчанию 25565),
# timeout (тайм-аут в секундах до сбоя подключения, по умолчанию 10 сек)
def __init__(self, ip, port=25565, timeout=10):
self.ip = ip
self.port = port
self.timeout = timeout
# Создание экземпляра класса JavaServer
self.server = JavaServer(self.ip, self.port, timeout=self.timeout)
# Метод, который возвращает список состоящий из 1 элементов:
# Текущее количество игроков на сервере
# Максимальное количество игроков на сервере
def get_server_online(self) -> list:
try:
status = self.server.status()
return [status.players.online, status.players.max]
# Код выполняемый при возникновении ошибки в блоке try
except Exception as e:
print(e)
return ["Error", "Error"]
# Метод, который возвращает список с никами текущих игроков на сервере
def get_server_online_list(self) -> list:
try:
query = self.server.query()
return query.players.names
# Код выполняемый при возникновении ошибки в блоке try
except Exception as e:
print(e)
return ["Error"]
# Метода, который возвращает строковое значение задержки между клиентом и сервером
# Возвращаемое значение имеет строковый тип, чтобы не происходило путаницы при обработке исключений
def get_ping(self) -> str:
try:
ping = self.server.ping()
return f"{ping:.1f}" # Тут можно изменить количество знаков после запятой
# Код выполняемый при возникновении ошибки в блоке try
except Exception as e:
print(e)
return "Error"