Source code for aiomcstats.main

from aiomcstats.models.bedrock import BedrockOffline, BedrockStatus

from aiomcstats.ping import Ping
from aiomcstats.utils import create_status, get_raw
from aiomcstats.models.java import Debug, OfflineStatus, Status
from typing import Optional, Union
from aiomcstats.bedrock import bedrock_status


[docs]async def status( host: str, port: Optional[int] = None, tries: Optional[int] = 3 ) -> Union[Status, OfflineStatus]: """Get status from Minecraft server. Args: host (str): minecraft server address port (Optional[int], optional): port to query server otherwise it is found. Defaults to None. tries (Optional[int], optional): The amount of tries to get data from server. Defaults to 3. Returns: Union[Status, OfflineStatus]: Online or Offline status object. """ exception = "" try: hostname, port, ip, srv = await get_raw(host, port) except Exception as e: exception = str(e) debug = Debug( ping=False, query=False, srv=False, ) return OfflineStatus( online=False, ip=host, port=port, debug=debug, hostname=host, error=exception, ) for _ in range(tries): try: pinger = Ping(hostname, port) await pinger.connect() await pinger.handshake() result = await pinger.status() data = create_status(result, ip, port, hostname, srv) return data except Exception as e: exception = str(e) debug = Debug( ping=True, query=False, srv=srv, ) return OfflineStatus( online=False, ip=ip, port=port, debug=debug, hostname=hostname, error=exception, )
[docs]async def bedrock( host: str, port: Optional[int] = 19132, tries: Optional[int] = 3 ) -> Union[BedrockStatus, BedrockOffline]: """Get status from Minecraft Bedrock server. Args: host (str): minecraft server address port (Optional[int], optional): port to query server otherwise it is found. Defaults to None. tries (Optional[int], optional): The amount of tries to get data from server. Defaults to 3. Returns: Union[BedrockStatus, BedrockOffline]: Online or Offline status object. """ exception = "" hostname, _, ip, _ = await get_raw(host, port) for _ in range(tries): try: return await bedrock_status(hostname, port) except Exception as e: exception = str(e) return BedrockOffline( online=False, ip=ip, port=port, hostname=hostname, error=exception, )