From 4b8246bddbb7bd33f36b40b697118a6b65fda402 Mon Sep 17 00:00:00 2001 From: Stijn De Clercq Date: Wed, 30 Sep 2020 19:29:40 +0200 Subject: [PATCH] fix status typo, turn status into multiple commands --- cogs/serverstatus.py | 73 ++++++++++++++++++++++++++++++++++++++++++++ cogs/servertatus.py | 46 ---------------------------- 2 files changed, 73 insertions(+), 46 deletions(-) create mode 100644 cogs/serverstatus.py delete mode 100644 cogs/servertatus.py diff --git a/cogs/serverstatus.py b/cogs/serverstatus.py new file mode 100644 index 0000000..f7fd2cc --- /dev/null +++ b/cogs/serverstatus.py @@ -0,0 +1,73 @@ +import discord +from discord.ext import commands +from mcstatus import MinecraftServer + + +class ServerStatus(commands.Cog): + def __init__(self, client): + self.client = client + + @commands.group(name="Ping", aliases=["Status"], case_insensitive=True, invoke_without_command=True) + async def ping(self, ctx): + servers = {"Earth": "25568", "Moon": "25567"} + + # 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 = 0 + + # Add field for all the servers (for-loop so nothing has to be changed for future servers) + for server in servers: + latency, up = self.getLatency(servers[server]) + upCounter += up + 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) + + @ping.command(name="Earth", aliases=["E", "S1", "Server1"]) + async def earth(self, ctx): + latencyEmbed = self.serverLatencyEmbed("Earth", "25568") + await ctx.send(embed=latencyEmbed) + + @ping.command(name="Moon", aliases=["M", "S2", "Server2"]) + async def moon(self, ctx): + latencyEmbed = self.serverLatencyEmbed("Moon", "25567") + await ctx.send(embed=latencyEmbed) + + # Latency for only 1 server, avoid code duplication + def serverLatencyEmbed(self, server, ip): + embed = discord.Embed() + embed.set_author(name="{} Status".format(server)) + latency, up = self.getLatency(ip) + embed.description = latency + embed.colour = discord.Colour.green() if up == 1 else discord.Colour.red() + return embed + + def getLatency(self, server): + ip = "81.82.224.207:" + up = 1 + + minecraftServer = MinecraftServer.lookup(ip + server) + + try: + # Online + latency = f":green_circle: Server replied in {minecraftServer.ping()}ms." + except: + # Offline + up = -1 + latency = ":red_circle: Server is offline." + return latency, up + + +def setup(client): + client.add_cog(ServerStatus(client)) \ No newline at end of file diff --git a/cogs/servertatus.py b/cogs/servertatus.py deleted file mode 100644 index 5ea09c6..0000000 --- a/cogs/servertatus.py +++ /dev/null @@ -1,46 +0,0 @@ -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: - # 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))