import logging from asyncio import sleep import disnake from disnake.ext import commands, tasks from lib.Comands import read_json from lib.DB import fill_bd, prepare_db class Admin(commands.Cog, name='Admin'): def __init__(self, bot): self.bot = bot # defining bot as global var in class # self.activity.start() @commands.Cog.listener() # this is a decorator for events/listeners async def on_ready(self): for g in self.bot.get_all_members(): await prepare_db(g.guild.id) for g in self.bot.get_all_members(): await fill_bd(g.name, g.id, g.bot, g.nick, g.guild.id) logging.info(f'Cog {__name__.split(".")[1]} is ready!.') @tasks.loop(seconds=20) async def activity(self): await self.bot.change_presence( activity=disnake.Activity( name=f'Users: {str(len(self.bot.users))}', type=3 ) ) await sleep(10) await self.bot.change_presence( activity=disnake.Activity( name=f'Servers: {str(len(self.bot.guilds))}', type=3 ) ) @commands.Cog.listener() async def on_guild_join(self, guild): for g in guild.members: await fill_bd(g.name, g.id, g.bot, g.nick, guild.id) @commands.Cog.listener() async def on_member_join(self, member): await fill_bd(member.name, member.id, member.bot, member.nick, member.guild.id) bot_role = read_json(member.guild.id, 'bot_role') # Get bot role guest_role = read_json(member.guild.id, 'guest_role') # Get guest role if bot_role or guest_role: if member.bot == 0: role = disnake.utils.get(member.guild.roles, id=guest_role) else: role = disnake.utils.get(member.guild.roles, id=bot_role) logging.info(f"Adding to {member} role {role}") await member.add_roles(role) def setup(bot): # an extension must have a setup function bot.add_cog(Admin(bot)) # adding a cog