44 lines
1.6 KiB
Python
44 lines
1.6 KiB
Python
from typing import List
|
|
|
|
import disnake
|
|
from disnake import OptionChoice
|
|
from disnake.ext import commands
|
|
|
|
from lib.Comands import write_json
|
|
from lib.Logger import logger
|
|
|
|
|
|
class Fun(commands.Cog, name='Fun'):
|
|
def __init__(self, bot: commands.Bot):
|
|
self.bot = bot # defining bot as global var in class
|
|
|
|
@commands.Cog.listener() # this is a decorator for events/listeners
|
|
async def on_ready(self):
|
|
logger.info(f'Cog {__name__.split(".")[1]} is ready!.')
|
|
|
|
@commands.has_permissions(administrator=True)
|
|
@commands.slash_command(
|
|
name="set_bot_channel",
|
|
description="Set channel which iterate with bot",
|
|
|
|
)
|
|
async def set_bot_channel(self, inter: disnake.ApplicationCommandInteraction, channel: str):
|
|
await write_json(inter.guild.id,
|
|
"channel",
|
|
disnake.utils.find(lambda d: d.name == channel, inter.guild.channels).id)
|
|
await inter.response.send_message(f"Channel set up to {channel}", ephemeral=True)
|
|
|
|
@set_bot_channel.autocomplete('channel')
|
|
async def _list_text_channels(self,
|
|
inter: disnake.ApplicationCommandInteraction,
|
|
current: str) -> List[OptionChoice]:
|
|
_list = [r.name for r in inter.guild.text_channels]
|
|
return [
|
|
OptionChoice(name=choice, value=choice)
|
|
for choice in _list if current in choice
|
|
]
|
|
|
|
|
|
def setup(bot): # an extension must have a setup function
|
|
bot.add_cog(Fun(bot)) # adding a cog
|