import logging import disnake from disnake import Option, OptionType, Colour from disnake.ext import commands from lib.Comands import write_json from lib.DB import work_with_db, read_db 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): logging.info(f'Cog {__name__.split(".")[1]} is ready!.') @commands.Cog.listener() async def on_member_update(self, before: disnake.Member, after: disnake.Member): sql_update_query = f"""UPDATE "{after.guild.id}" set nick = ? where userid = ?""" data_tuple = (after.nick, before.id) await work_with_db(sql_update_query, data_tuple) @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) @commands.slash_command( name="set_guest_role", description="Set Default bot role", options=[ Option("role", "Specify role", OptionType.role, required=True), ] ) @commands.has_permissions(administrator=True) async def set_guest_role(self, inter, role): await write_json(inter.guild.id, "guest_role", role.id) await inter.response.send_message(f"Setted up dsss bot role to: `{role.name}`", ephemeral=True) @commands.command(name="set_prefix") @commands.has_permissions(administrator=True) async def command_set_prefix(self, ctx, prefix: str): await write_json(ctx.guild.id, "prefix", prefix) await ctx.reply(f"Prefix set to: `{prefix}`") @commands.guild_only() @commands.slash_command( name="set_prefix", description="Setting up bot prefix", options=[ Option("prefix", "Specify prefix", OptionType.string, required=True), ] ) @commands.has_permissions(administrator=True) async def slash_set_prefix(self, inter, prefix: str): await write_json(inter.guild.id, "prefix", prefix) await inter.response.send_message(f"Prefix set to: `{prefix}`", ephemeral=True) @commands.guild_only() @commands.slash_command( name="set_trigger_role", description="Setting up role to trigger bot", options=[ Option("role", "Specify role", OptionType.role, required=True), ] ) @commands.has_permissions(administrator=True) async def set_trigger_role(self, inter, role): await write_json(inter.guild.id, "tigger_role", role.id) await inter.response.send_message(f"Role to trigger set to : `{role.name}`", ephemeral=True) @commands.slash_command( name="set_bot_role", description="Set Default bot role", options=[ Option("role", "Specify role", OptionType.role, required=True), ] ) @commands.guild_only() @commands.has_permissions(administrator=True) async def set_bot_role(self, ctx, role): await write_json(ctx.guild.id, "bot_role", role.id) await ctx.send(f"Setted up bot role to: `{role.name}`", ephemeral=True) @set_bot_role.error @set_trigger_role.error @slash_set_prefix.error async def set_prefix_error(self, inter, prefix): await inter.response.send_message("You don`t have permissions", ephemeral=True) def setup(bot): # an extension must have a setup function bot.add_cog(General(bot)) # adding a cog