fix status typo, turn status into multiple commands
This commit is contained in:
73
cogs/serverstatus.py
Normal file
73
cogs/serverstatus.py
Normal file
@@ -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))
|
||||
@@ -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))
|
||||
Reference in New Issue
Block a user