65 lines
1.8 KiB
Python
65 lines
1.8 KiB
Python
![]() |
import code
|
||
|
from pprint import pprint
|
||
|
|
||
|
from discord.ext.commands import command, has_role, Bot
|
||
|
from discord.ext.commands import Cog
|
||
|
|
||
|
from src.constants import *
|
||
|
|
||
|
|
||
|
class DevCog(Cog, name="Dev tools"):
|
||
|
def __init__(self, bot: Bot):
|
||
|
self.bot = bot
|
||
|
|
||
|
@command(name="interrupt")
|
||
|
@has_role(Role.DEV)
|
||
|
async def interrupt_cmd(self, ctx):
|
||
|
"""
|
||
|
(dev) Ouvre une console là où un @dev m'a lancé. :warning:
|
||
|
|
||
|
A utiliser en dernier recours:
|
||
|
- le bot sera inactif pendant ce temps.
|
||
|
- toutes les commandes seront executées à sa reprise.
|
||
|
"""
|
||
|
|
||
|
await ctx.send(
|
||
|
"J'ai été arrêté et une console interactive a été ouverte là où je tourne. "
|
||
|
"Toutes les commandes rateront tant que cette console est ouverte.\n"
|
||
|
"Soyez rapides, je déteste les opérations à coeur ouvert... :confounded:"
|
||
|
)
|
||
|
|
||
|
# Utility functions
|
||
|
|
||
|
local = {
|
||
|
**globals(),
|
||
|
**locals(),
|
||
|
"pprint": pprint,
|
||
|
"_show": lambda o: print(*dir(o), sep="\n"),
|
||
|
"__name__": "__console__",
|
||
|
"__doc__": None,
|
||
|
}
|
||
|
|
||
|
code.interact(
|
||
|
banner="Ne SURTOUT PAS FAIRE Ctrl+C !\n(TFJM² debugger)", local=local
|
||
|
)
|
||
|
await ctx.send("Tout va mieux !")
|
||
|
|
||
|
@command(name="reload")
|
||
|
@has_role(Role.DEV)
|
||
|
async def reload_cmd(self, ctx, name):
|
||
|
|
||
|
if name in ("dev", "teams", "tirages"):
|
||
|
name = f"src.cogs.{name}"
|
||
|
|
||
|
try:
|
||
|
self.bot.reload_extension(name)
|
||
|
except:
|
||
|
await ctx.send(f":grimacing: **{name}** n'a pas pu être rechargée.")
|
||
|
raise
|
||
|
else:
|
||
|
await ctx.send(f":tada: L'extension **{name}** a bien été rechargée.")
|
||
|
|
||
|
|
||
|
def setup(bot: Bot):
|
||
|
bot.add_cog(DevCog(bot))
|