# administration.py by freaky (freaky@freakyonline.de)
# ---
#
# This extension is for administrating the bot.
# As I'm now using using jishaku tools for
# administrating the bot, this extension is
# kinda obsolete.

import discord
from discord import app_commands
from discord.ext import commands

@app_commands.default_permissions()
class AdminExt(commands.GroupCog, name="admin"):
  def __init__(self, bot: commands.Bot) -> None:
    self.bot = bot
    super().__init__()  # this is now required in this context.

  @app_commands.command(name="stop", description="Stops (shuts down) the bot")
  @commands.is_owner()
  async def admin_stop(self, interaction: discord.Interaction) -> None:
    """ /admin stop """
    await interaction.response.send_message("The bot will now shutdown. Good bye! :)")
    await self.bot.close()

  @app_commands.command(name="say", description="Makes the bot repeat what you type")
  @app_commands.describe(text="Text to send to the channel/query.")
  @commands.is_owner()
  async def admin_say(self, interaction: discord.Interaction, text: str) -> None:
    """ /admin say <text> """
    await interaction.response.send_message(text)

  @app_commands.command(name="guilds", description="List guilds the bot is in")
  @commands.is_owner()
  async def admin_guilds(self, interaction: discord.Interaction) -> None:
    """/admin guilds"""
    guilds = [guild async for guild in self.bot.fetch_guilds(limit=150)]

    for guild in guilds:
      guild = ''.join(str(guild))
      await interaction.response.send_message(guild, ephemeral=True)

async def setup(bot: commands.Bot) -> None:
  await bot.add_cog(AdminExt(bot))