import disnake from disnake import Option, OptionType, Colour from disnake.ext import commands from lib import read_db from lib import logger class General(commands.Cog): def __init__(self, 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.slash_command( name="info", description="Read list of tracks for user", options=[ Option("user", "Specify any user", OptionType.user), ] ) async def info(self, inter, user=None): user = user or inter.author user_audio = await read_db(inter.guild.id, user.id, column='usertracks') default_audio = await read_db(inter.guild.id, user.id, column='defaulttracks') rolelist = [r.mention for r in user.roles if r != inter.guild.default_role] if rolelist: roles = "\n".join(rolelist) else: roles = "Not added any role" if user_audio: audios = "• " + "\n• ".join(sorted(user_audio.split(", "))) else: audios = "Not selected audio" if default_audio: audios2 = "• " + "\n• ".join(sorted(default_audio.split(", "))) else: audios2 = "Not selected audio" emb = disnake.Embed( title=f"General information", description=f"General information on server about {user}", color=Colour.random() ) emb.set_thumbnail(url=user.display_avatar) emb.add_field(name="General info", value=f"Username: {user}\n" f"Nickname: {user.nick}\n" f"Joined at: {user.joined_at.strftime('%A, %B %d %Y @ %H:%M:%S')}", inline=False) emb.add_field(name="User audio list", value=f"{audios}", inline=True) emb.add_field(name="Default audio list", value=f"{audios2}", inline=True) emb.add_field(name="Roles list", value=f"{roles}", inline=True) emb.set_footer(text="Information requested by: {}".format(inter.author.display_name)) await inter.response.send_message(embed=emb, ephemeral=True) def setup(bot): # an extension must have a setup function bot.add_cog(General(bot)) # adding a cog