45 lines
1.3 KiB
Python
45 lines
1.3 KiB
Python
import json
|
|
|
|
from util import hook, http
|
|
|
|
|
|
@hook.command(autohelp=False)
|
|
def mcstatus(inp):
|
|
"""mcstatus -- Checks the status of various Mojang (the creators of Minecraft) servers."""
|
|
|
|
try:
|
|
request = http.get("http://status.mojang.com/check")
|
|
except (http.URLError, http.HTTPError) as e:
|
|
return "Unable to get Minecraft server status: {}".format(e)
|
|
|
|
# lets just reformat this data to get in a nice format
|
|
data = json.loads(request.replace("}", "").replace("{", "").replace("]", "}").replace("[", "{"))
|
|
|
|
out = []
|
|
|
|
# use a loop so we don't have to update it if they add more servers
|
|
green = []
|
|
yellow = []
|
|
red = []
|
|
for server, status in data.items():
|
|
if status == "green":
|
|
green.append(server)
|
|
elif status == "yellow":
|
|
yellow.append(server)
|
|
else:
|
|
red.append(server)
|
|
|
|
if green:
|
|
out = "\x033\x02Online\x02\x0f: " + ", ".join(green)
|
|
if yellow:
|
|
out += " "
|
|
if yellow:
|
|
out += "\x02Issues\x02: " + ", ".join(yellow)
|
|
if red:
|
|
out += " "
|
|
if red:
|
|
out += "\x034\x02Offline\x02\x0f: " + ", ".join(red)
|
|
|
|
return "\x0f" + out.replace(".mojang.com", ".mj") \
|
|
.replace(".minecraft.net", ".mc")
|