mirror of
https://github.com/Specoolazius/mcserver-discordbot.git
synced 2024-11-25 01:49:42 +01:00
76 lines
2.4 KiB
Python
76 lines
2.4 KiB
Python
"""
|
|
Project is under GNU GENERAL PUBLIC LICENSE 3.0
|
|
|
|
2022, created by Specoolazius
|
|
"""
|
|
|
|
import asyncio
|
|
from datetime import datetime
|
|
import pprint
|
|
|
|
import discord
|
|
from discord.commands import slash_command
|
|
import mcstatus.pinger
|
|
|
|
from libs import Client
|
|
|
|
|
|
class Status(discord.Cog):
|
|
"""< discord.Cog >
|
|
|
|
An extension to display servers status
|
|
"""
|
|
|
|
def __init__(self, bot: Client):
|
|
self.bot = bot
|
|
self.mc_server = self.bot.mc_server
|
|
|
|
@slash_command(name='info')
|
|
async def __show_server_info(self, ctx: discord.ApplicationContext) -> None:
|
|
print()
|
|
"""
|
|
.add_field(
|
|
name='Version',
|
|
value="\n".join(re.split(", | ", status.version.name)),
|
|
)
|
|
"""
|
|
|
|
@slash_command(name='status')
|
|
async def __show_status(self, ctx: discord.ApplicationContext) -> None:
|
|
print('exec')
|
|
await ctx.defer()
|
|
try:
|
|
status: mcstatus.pinger.PingResponse = await self.mc_server.async_status()
|
|
pprint.pprint(vars(status))
|
|
|
|
query = await self.mc_server.async_query()
|
|
pprint.pprint(vars(query))
|
|
|
|
await ctx.respond(
|
|
embed=discord.Embed(
|
|
title=f'Minecraft server status!',
|
|
description=f'(**{self.bot.config.server_address}** on port {self.bot.config.server_port})',
|
|
colour=self.bot.color,
|
|
timestamp=datetime.now()
|
|
).add_field(
|
|
name='Server Ping',
|
|
value=f'**﹂**``{round(status.latency, 2)} ms``',
|
|
# value=f'**⌊** **🏓 Pong!** with **``{round(status.latency, 2)}``** ms'
|
|
).add_field(
|
|
name='Players online',
|
|
value=f'**﹂** ``{status.players.online} players``',
|
|
)
|
|
)
|
|
|
|
except asyncio.TimeoutError or OSError:
|
|
# ToDo: Check os Error on booting
|
|
# ToDo: add is starting and create embed
|
|
await ctx.respond(
|
|
embed=discord.Embed(
|
|
title=f'Server offline',
|
|
description=f'(**{self.bot.config.server_address}** on port {self.bot.config.server_port})',
|
|
colour=self.bot.color,
|
|
timestamp=datetime.now()
|
|
)
|
|
)
|