feat(commands/bot): add uptime

This commit is contained in:
Ryan 2024-12-30 03:47:01 -05:00
parent 59c4b37831
commit 6b9172ef1b
Signed by: ErrorNoInternet
GPG Key ID: 2486BFB7B1E6A4A3
6 changed files with 68 additions and 13 deletions

View File

@ -3,13 +3,16 @@ import inspect
from state import reloaded_modules from state import reloaded_modules
from . import tools, utils, voice from . import bot, tools, utils, voice
from .utils import * from .utils import *
def __reload_module__(): def __reload_module__():
for name, module in globals().items(): for name, module in globals().items():
if inspect.ismodule(module) and name not in constants.RELOAD_BLACKLISTED_MODULES: if (
inspect.ismodule(module)
and name not in constants.RELOAD_BLACKLISTED_MODULES
):
importlib.reload(module) importlib.reload(module)
if "__reload_module__" in dir(module) and name not in reloaded_modules: if "__reload_module__" in dir(module) and name not in reloaded_modules:
reloaded_modules.add(name) reloaded_modules.add(name)

43
commands/bot.py Normal file
View File

@ -0,0 +1,43 @@
import importlib
import inspect
import time
import arguments
import constants
from state import reloaded_modules, start_time
import commands
import utils
async def uptime(message):
tokens = commands.tokenize(message.content)
parser = arguments.ArgumentParser(
tokens[0],
"print bot uptime",
)
parser.add_argument(
"-s",
"--since",
action="store_true",
help="bot up since",
)
if not (args := await parser.parse_args(message, tokens)):
return
if args.since:
await utils.reply(message, f"{round(start_time)}")
else:
await utils.reply(message, f"up {round(time.time() - start_time)} seconds")
def __reload_module__():
for name, module in globals().items():
if (
inspect.ismodule(module)
and name not in constants.RELOAD_BLACKLISTED_MODULES
):
importlib.reload(module)
if "__reload_module__" in dir(module) and name not in reloaded_modules:
reloaded_modules.add(name)
module.__reload_module__()

View File

@ -4,17 +4,18 @@ import constants
class Command(enum.Enum): class Command(enum.Enum):
RELOAD = "reload"
EXECUTE = "execute"
CLEAR = "clear" CLEAR = "clear"
PURGE = "purge" EXECUTE = "execute"
JOIN = "join" JOIN = "join"
LEAVE = "leave" LEAVE = "leave"
QUEUE = "queue"
PLAY = "play"
SKIP = "skip"
RESUME = "resume"
PAUSE = "pause" PAUSE = "pause"
PLAY = "play"
PURGE = "purge"
QUEUE = "queue"
RELOAD = "reload"
RESUME = "resume"
SKIP = "skip"
UPTIME = "uptime"
VOLUME = "volume" VOLUME = "volume"

View File

@ -92,6 +92,8 @@ async def on_message(message):
await commands.voice.pause(message) await commands.voice.pause(message)
case C.VOLUME: case C.VOLUME:
await commands.voice.volume(message) await commands.voice.volume(message)
case C.UPTIME:
await commands.bot.uptime(message)
except Exception as e: except Exception as e:
await message.reply( await message.reply(
f"exception occurred while processing command: ```\n{''.join(traceback.format_exception(e)).replace('`', '\\`')}```", f"exception occurred while processing command: ```\n{''.join(traceback.format_exception(e)).replace('`', '\\`')}```",

10
main.py
View File

@ -2,13 +2,12 @@ import importlib
import inspect import inspect
import time import time
import commands
import constants import constants
import core import core
import events import events
from state import client, reloaded_modules from state import client, reloaded_modules, start_time
start_time = time.time() import commands
@client.event @client.event
@ -36,7 +35,10 @@ async def on_message(message):
commands.Command.RELOAD commands.Command.RELOAD
]: ]:
for name, module in globals().items(): for name, module in globals().items():
if inspect.ismodule(module) and name not in constants.RELOAD_BLACKLISTED_MODULES: if (
inspect.ismodule(module)
and name not in constants.RELOAD_BLACKLISTED_MODULES
):
importlib.reload(module) importlib.reload(module)
if "__reload_module__" in dir(module) and name not in reloaded_modules: if "__reload_module__" in dir(module) and name not in reloaded_modules:
reloaded_modules.add(name) reloaded_modules.add(name)

View File

@ -1,5 +1,9 @@
import time
import disnake import disnake
start_time = time.time()
playback_queue = {} playback_queue = {}
reloaded_modules = set() reloaded_modules = set()