47 lines
1.5 KiB
Python
47 lines
1.5 KiB
Python
import discord
|
|
from discord.ext import commands
|
|
from mcstatus import MinecraftServer
|
|
|
|
|
|
class ServerStatus(commands.Cog):
|
|
def __init__(self, client):
|
|
self.client = client
|
|
|
|
@commands.command(name="Ping", aliases=["Status"])
|
|
async def ping(self, ctx):
|
|
servers = {"Earth": "25568", "Moon": "25567"}
|
|
ip = "81.82.224.207:"
|
|
|
|
# List of colours for the amount of servers that are online
|
|
upColours = [discord.Colour.red(), discord.Colour.orange(), discord.Colour.green()]
|
|
|
|
embed = discord.Embed()
|
|
embed.set_author(name="Status")
|
|
|
|
# Amount of servers that are online
|
|
upCounter = 2
|
|
|
|
# Add field for all the servers (for-loop so nothing has to be changed for future servers)
|
|
for server in servers:
|
|
minecraftServer = MinecraftServer.lookup(ip + servers[server])
|
|
|
|
try:
|
|
# Online
|
|
latency = f":green_circle: Server replied in {minecraftServer.ping()}ms."
|
|
except ConnectionRefusedError:
|
|
# Offline
|
|
upCounter -= 1
|
|
latency = ":red_circle: Server is offline."
|
|
embed.add_field(name=server, value=latency, inline=False)
|
|
|
|
# Set the embed colour
|
|
embed.colour = upColours[upCounter]
|
|
|
|
# Bot's latency
|
|
embed.add_field(name="WorldCraft Bot", value=f":green_circle: {round(self.client.latency * 1000)}ms")
|
|
await ctx.send(embed=embed)
|
|
|
|
|
|
def setup(client):
|
|
client.add_cog(ServerStatus(client))
|