diff --git a/minearchy_bot/cogs/miscellanious.py b/minearchy_bot/cogs/miscellanious.py index f7011fd..ca4626e 100644 --- a/minearchy_bot/cogs/miscellanious.py +++ b/minearchy_bot/cogs/miscellanious.py @@ -2,14 +2,11 @@ from __future__ import annotations from datetime import timedelta as TimeDelta from inspect import cleandoc as strip -from io import BytesIO from platform import python_version -from time import monotonic as get_monotonic, time as get_time +from time import time as get_time from typing import TYPE_CHECKING -from discord import CategoryChannel, File from discord.ext.commands import Cog, command -from discord.utils import escape_markdown from ..utils import override @@ -34,27 +31,6 @@ class Miscellaneous( self.bot.help_command.cog = None self.bot.help_command.hidden = True - @command(brief="Hello!", help="Hello!") - async def hello(self, ctx: Context) -> None: - await ctx.reply(f"Hi {escape_markdown(ctx.author.name)}, yes the bot is running :).") - - @command( - brief="Sends the total members in the server.", - help="Sends the total members in the server.", - ) - async def members(self, ctx: Context) -> None: - await ctx.reply(f"There are `{ctx.guild.member_count}` users in this server.") - - @command( - brief="Sends the bots ping.", - help="Sends the bots ping." - ) - async def ping(self, ctx: Context) -> None: - ts = get_monotonic() - message = await ctx.reply("Pong!") - ts = get_monotonic() - ts - await message.edit(content=f"Pong! `{int(ts * 1000)}ms`") - @command( brief="Sends info about the bot.", help="Sends info about the bot." @@ -70,55 +46,6 @@ class Miscellaneous( ) ) - @command( - name="channel-perm-tree", - hidden=True - ) - async def channel_perm_tree(self, ctx: Context) -> None: - string = [] - - for channel in ctx.guild.channels: - ind = " " - ind_nr = 1 if getattr(channel, "category", False) else 0 - - string.append(ind*ind_nr + f"{'category' if isinstance(channel, CategoryChannel) else 'channel'} {channel.name}:") - - if channel.permissions_synced: - string.append(ind*(ind_nr+1) + "permissions: synced") - else: - string.append(ind*(ind_nr+1) + "permissions:") - - if not channel.category: - for thing, overwrites in channel.overwrites.items(): - allows, denies = overwrites.pair() - - for allow in allows: - string.append(ind*(ind_nr+2) + f"{allow[0]}: ✅") - for deny in denies: - string.append(ind*(ind_nr+2) + f"{deny[0]}: ❌") - - else: - for thing, overwrites in channel.overwrites.items(): - parent_overwrites = channel.category.overwrites.get(thing) - - allows, denies = overwrites.pair() - parent_allows, parent_denies = parent_overwrites.pair() if parent_overwrites else ((), ()) - - for allow in allows: - if allow not in parent_allows: - string.append(ind*(ind_nr+2) + f"{allow[0]}: ✅") - - for deny in denies: - if deny not in parent_denies: - string.append(ind*(ind_nr+2) + f"{deny[0]}: ❌") - - await ctx.reply( - file=File( - BytesIO("\n".join(string).encode()), - filename="channel-perm-tree.txt" - ) - ) - @command( brief="Sets you as AFK.", help="Sets you as AFK.", diff --git a/minearchy_bot/cogs/utils.py b/minearchy_bot/cogs/utils.py new file mode 100644 index 0000000..b422202 --- /dev/null +++ b/minearchy_bot/cogs/utils.py @@ -0,0 +1,88 @@ +from __future__ import annotations + +from io import BytesIO +from time import monotonic as get_monotonic +from typing import TYPE_CHECKING + +from discord import CategoryChannel, File +from discord.ext.commands import Cog, command + +if TYPE_CHECKING: + from discord.ext.commands import Context + + from .. import MinearchyBot + + +class Utils(Cog): + def __init__(self, bot: MinearchyBot) -> None: + self.bot = bot + + @command( + brief="Sends the total members in the server.", + help="Sends the total members in the server.", + ) + async def members(self, ctx: Context) -> None: + await ctx.reply(f"There are `{ctx.guild.member_count}` users in this server.") + + @command( + brief="Sends the bots ping.", + help="Sends the bots ping." + ) + async def ping(self, ctx: Context) -> None: + ts = get_monotonic() + message = await ctx.reply("Pong!") + ts = get_monotonic() - ts + await message.edit(content=f"Pong! `{int(ts * 1000)}ms`") + + @command( + name="channel-perm-tree", + hidden=True + ) + async def channel_perm_tree(self, ctx: Context) -> None: + string = [] + + for channel in ctx.guild.channels: + ind = " " + ind_nr = 1 if getattr(channel, "category", False) else 0 + + string.append(ind*ind_nr + f"{'category' if isinstance(channel, CategoryChannel) else 'channel'} {channel.name}:") + + if channel.permissions_synced: + string.append(ind*(ind_nr+1) + "permissions: synced") + else: + string.append(ind*(ind_nr+1) + "permissions:") + + if not channel.category: + for thing, overwrites in channel.overwrites.items(): + allows, denies = overwrites.pair() + + for allow in allows: + string.append(ind*(ind_nr+2) + f"{allow[0]}: ✅") + for deny in denies: + string.append(ind*(ind_nr+2) + f"{deny[0]}: ❌") + + else: + for thing, overwrites in channel.overwrites.items(): + parent_overwrites = channel.category.overwrites.get(thing) + + allows, denies = overwrites.pair() + parent_allows, parent_denies = parent_overwrites.pair() if parent_overwrites else ((), ()) + + for allow in allows: + if allow not in parent_allows: + string.append(ind*(ind_nr+2) + f"{allow[0]}: ✅") + + for deny in denies: + if deny not in parent_denies: + string.append(ind*(ind_nr+2) + f"{deny[0]}: ❌") + + await ctx.reply( + file=File( + BytesIO("\n".join(string).encode()), + filename="channel-perm-tree.txt" + ) + ) + + +async def setup(bot: MinearchyBot) -> None: + await bot.add_cog(Utils(bot))