mirror of
https://github.com/polyjitter/searchbot-discord.git
synced 2024-08-14 22:46:55 +00:00
Turned extend into command group
This commit is contained in:
parent
002ac17047
commit
504567a334
4 changed files with 51 additions and 32 deletions
Binary file not shown.
|
@ -24,10 +24,8 @@ class Core(commands.Cog):
|
|||
|
||||
# Main Stuff
|
||||
self.bot = bot
|
||||
self.extensions_list = bot.extensions_list
|
||||
self.emoji = "\U0001F4E6"
|
||||
self.settings = {
|
||||
'extensions': []
|
||||
}
|
||||
|
||||
# Help Command
|
||||
self._original_help_command = bot.help_command
|
||||
|
@ -35,21 +33,6 @@ class Core(commands.Cog):
|
|||
bot.help_command = TaciHelpCommand()
|
||||
bot.help_command.cog = self
|
||||
|
||||
# Extensions
|
||||
self._init_extensions()
|
||||
|
||||
def _init_extensions(self):
|
||||
"""Initializes extensions."""
|
||||
|
||||
for ext in os.listdir('extensions'):
|
||||
if ext.endswith('.py') and not ext.startswith('core'):
|
||||
try:
|
||||
self.bot.load_extension(f'extensions.{ext[:-3]}')
|
||||
self.settings['extensions'].append(
|
||||
f'extensions.{ext[:-3]}')
|
||||
except:
|
||||
pass
|
||||
|
||||
def _humanbytes(self, B) -> str: # function lifted from StackOverflow
|
||||
"""Return the given bytes as a human friendly KB, MB, GB, or TB string."""
|
||||
|
||||
|
@ -129,16 +112,37 @@ Number of extensions present: {len(ctx.bot.cogs)}
|
|||
ping = (after - before) * 1000
|
||||
await pong.edit(content="`PING discordapp.com {}ms`".format(int(ping)))
|
||||
|
||||
@commands.command()
|
||||
@commands.group(aliases=['extensions', 'ext'],
|
||||
invoke_without_command=True)
|
||||
@commands.is_owner()
|
||||
async def extend(self, ctx, name:str = None):
|
||||
|
||||
# Provides status of extension
|
||||
if name is not None:
|
||||
status = "is" if f'extensions.{name}' in self.extensions_list else "is not"
|
||||
msg = f"**extensions.{name}** {status} currently loaded and/or existent."
|
||||
|
||||
# Handles empty calls
|
||||
else:
|
||||
msg = (
|
||||
"**Nothing was provided!**\n\n"
|
||||
"Please provide an extension name for status, "
|
||||
"or provide a subcommand."
|
||||
)
|
||||
|
||||
# Sends completed message
|
||||
await ctx.send(msg)
|
||||
|
||||
@extend.command(aliases=['le', 'l'])
|
||||
@commands.is_owner()
|
||||
async def load(self, ctx, name: str):
|
||||
"""Load an extension into the bot."""
|
||||
m = await ctx.send(f'Loading {name}')
|
||||
extension_name = 'extensions.{0}'.format(name)
|
||||
if extension_name not in self.settings['extensions']:
|
||||
extension_name = f'extensions.{name}'
|
||||
if extension_name not in self.extensions_list:
|
||||
try:
|
||||
self.bot.load_extension(extension_name)
|
||||
self.settings['extensions'].append(extension_name)
|
||||
self.extensions_list.append(extension_name)
|
||||
await m.edit(content='Extension loaded.')
|
||||
except Exception as e:
|
||||
await m.edit(
|
||||
|
@ -146,34 +150,34 @@ Number of extensions present: {len(ctx.bot.cogs)}
|
|||
else:
|
||||
await m.edit(content='Extension already loaded.')
|
||||
|
||||
@commands.command(aliases=["ule", "ul"])
|
||||
@extend.command(aliases=["ule", "ul"])
|
||||
@commands.is_owner()
|
||||
async def unload(self, ctx, name: str):
|
||||
"""Unload an extension from the bot."""
|
||||
|
||||
m = await ctx.send(f'Unloading {name}')
|
||||
extension_name = 'extensions.{0}'.format(name)
|
||||
if extension_name in self.settings['extensions']:
|
||||
extension_name = f'extensions.{name}'
|
||||
if extension_name in self.extensions_list:
|
||||
self.bot.unload_extension(extension_name)
|
||||
self.settings['extensions'].remove(extension_name)
|
||||
self.extensions_list.remove(extension_name)
|
||||
await m.edit(content='Extension unloaded.')
|
||||
else:
|
||||
await m.edit(content='Extension not found or not loaded.')
|
||||
|
||||
@commands.command(aliases=["rle", "rl"])
|
||||
@extend.command(aliases=["rle", "rl"])
|
||||
@commands.is_owner()
|
||||
async def reload(self, ctx, name: str):
|
||||
"""Reload an extension of the bot."""
|
||||
|
||||
m = await ctx.send(f'Reloading {name}')
|
||||
extension_name = 'extensions.{0}'.format(name)
|
||||
if extension_name in self.settings['extensions']:
|
||||
extension_name = f'extensions.{name}'
|
||||
if extension_name in self.extensions_list:
|
||||
self.bot.unload_extension(extension_name)
|
||||
try:
|
||||
self.bot.load_extension(extension_name)
|
||||
await m.edit(content='Extension reloaded.')
|
||||
except Exception as e:
|
||||
self.settings['extensions'].remove(extension_name)
|
||||
self.extensions_list.remove(extension_name)
|
||||
await m.edit(
|
||||
content=f'Failed to reload extension\n`{type(e).__name__}: {e}`')
|
||||
else:
|
||||
|
|
|
@ -38,6 +38,7 @@ class Developer(commands.Cog):
|
|||
|
||||
def _cleanup_code(self, content):
|
||||
"""Automatically removes code blocks from the code."""
|
||||
|
||||
# remove ```py\n```
|
||||
if content.startswith('```') and content.endswith('```'):
|
||||
return '\n'.join(content.split('\n')[1:-1])
|
||||
|
@ -47,6 +48,7 @@ class Developer(commands.Cog):
|
|||
|
||||
def _get_syntax_error(self, err):
|
||||
"""Returns SyntaxError formatted for repl reply."""
|
||||
|
||||
return '```py\n{0.text}{1:>{0.offset}}\n{2}: {0}```'.format(
|
||||
err,
|
||||
'^',
|
||||
|
|
17
main.py
17
main.py
|
@ -29,7 +29,8 @@ class Bot(commands.Bot):
|
|||
# Initializes parent class
|
||||
super().__init__(self._get_prefix_new, **options)
|
||||
|
||||
# Get Config Values
|
||||
# Setup
|
||||
self.extensions_list = []
|
||||
with open('config.json') as f:
|
||||
self.config = json.load(f)
|
||||
self.prefix = self.config['PREFIX']
|
||||
|
@ -45,6 +46,18 @@ class Bot(commands.Bot):
|
|||
# Logging
|
||||
print('Initialization complete.\n\n')
|
||||
|
||||
def _init_extensions(self):
|
||||
"""Initializes extensions."""
|
||||
|
||||
for ext in os.listdir('extensions'):
|
||||
if ext.endswith('.py'):
|
||||
try:
|
||||
bot.load_extension(f'extensions.{ext[:-3]}')
|
||||
self.extensions_list.append(
|
||||
f'extensions.{ext[:-3]}')
|
||||
except Exception as e:
|
||||
print(e)
|
||||
|
||||
async def _get_prefix_new(self, bot, msg):
|
||||
"""More flexible check for prefix."""
|
||||
|
||||
|
@ -68,7 +81,7 @@ class Bot(commands.Bot):
|
|||
|
||||
# NOTE Extension Entry Point
|
||||
# Loads core, which loads all other extensions
|
||||
self.load_extension('extensions.core')
|
||||
self._init_extensions()
|
||||
|
||||
# Logging
|
||||
msg = "CONNECTED!\n"
|
||||
|
|
Loading…
Reference in a new issue